shiro密码验证的大致流程:
1. controller中login的时候
UsernamePasswordToken token = new UsernamePasswordToken(account, password);
try {
SecurityUtils.getSubject().login(token);
}
2. realm中调用doGetAuthenticationInfo
@Override
protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken authToken) throws AuthenticationException {
String username = (String)authToken.getPrincipal();
User user = userService.getUserByAccount(username);
if (user == null) {
throw new UnknownAccountException();
}
//交给AuthenticatingRealm使用CredentialsMatcher进行密码匹配,如果觉得人家的不好可以自定义实现
/**
* 这里传入的user信息,只是从数据库中查询到的结果,
* shiro会将token中的明文,按照配置中的加密方式进行加密,然后进行匹配。
* 有些教程,在这里将明文的pwd加密后传入,是没有必要的
*/