package com.mindskip.xzs.service.impl; import cn.hutool.crypto.asymmetric.KeyType; import cn.hutool.crypto.asymmetric.RSA; import com.mindskip.xzs.domain.User; import com.mindskip.xzs.service.AuthenticationService; import com.mindskip.xzs.service.UserService; import org.springframework.stereotype.Service; import javax.annotation.Resource; /** * @author 武汉思维跳跃科技有限公司 */ @Service public class AuthenticationServiceImpl implements AuthenticationService { @Resource(name = "DatabaseRSA") private RSA rsa; private final UserService userService; public AuthenticationServiceImpl(UserService userService) { this.userService = userService; } /** * @param username username * @param password password * @return boolean */ @Override public boolean authUser(String username, String password) { User user = userService.getUserByUserName(username); return authUser(user, username, password); } @Override public boolean authUser(User user, String username, String password) { if (user == null) { return false; } String encodePwd = user.getPassword(); if (null == encodePwd || encodePwd.length() == 0) { return false; } String pwd = pwdDecode(encodePwd); return pwd.equals(password); } @Override public String pwdEncode(String password) { return rsa.encryptBase64(password, KeyType.PublicKey); } @Override public String pwdDecode(String encodePwd) { return rsa.decryptStr(encodePwd, KeyType.PrivateKey); } }