package com.doumee.config.shiro;
|
|
import com.doumee.core.utils.Utils;
|
import com.doumee.dao.system.model.SystemUser;
|
import com.doumee.service.system.SystemUserService;
|
import org.apache.shiro.authc.AuthenticationInfo;
|
import org.apache.shiro.authc.AuthenticationToken;
|
import org.apache.shiro.authc.UsernamePasswordToken;
|
import org.apache.shiro.authc.credential.HashedCredentialsMatcher;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.context.annotation.Lazy;
|
import org.springframework.stereotype.Component;
|
|
/**
|
* Shiro密码比对处理
|
* @author Eva.Caesar Liu
|
* @date 2023/04/17 12:11
|
*/
|
@Component
|
public class ShiroCredentialsMatcher extends HashedCredentialsMatcher {
|
@Lazy
|
@Autowired
|
private SystemUserService systemUserService;
|
|
@Override
|
public boolean doCredentialsMatch(AuthenticationToken token, AuthenticationInfo info) {
|
UsernamePasswordToken usernamePasswordToken = (UsernamePasswordToken) token;
|
SystemUser queryUserDto = new SystemUser();
|
queryUserDto.setUsername(usernamePasswordToken.getUsername());
|
queryUserDto.setDeleted(Boolean.FALSE);
|
SystemUser systemUser = systemUserService.findOne(queryUserDto);
|
if (systemUser == null) {
|
return Boolean.FALSE;
|
}
|
// if(usernamePasswordToken.getDdLogin()){
|
// return Boolean.TRUE;
|
// }
|
// if(usernamePasswordToken.getWxLogin()){
|
// return Boolean.TRUE;
|
// }
|
// 加密密码
|
String pwd = Utils.Secure.encryptPassword(new String(usernamePasswordToken.getPassword()), systemUser.getSalt());
|
// 比较密码
|
return this.equals(pwd, systemUser.getPassword());
|
}
|
}
|