为了账号安全,请及时绑定邮箱和手机立即绑定

shiro认证

自定义的Realm在进行shiro认证时,只判断了密码有没有而没有判断对不对,自定义Realm就返回SimpleAuthenticationInfo对象,请问是在 subject.isAuthenticated()方法中进行验证login的密码和返回密码是否一致嘛?

加盐加密时login传递的是明文,返回的是加盐加密后的,请问在验证时时自动将login的密码加盐加密码


正在回答

1 回答

String password = getPasswordByUsername(username);通过这个去获取的密码,如果密码没有找到是直接 return null,不为空才创建SimpleAuthenticationInfo返回对象的,这个是在创建对象之前的,这里用的是map一个定值,也可以是数据库或者缓存中去查找密码。

login传递的是明文,但是通过

//加密

HashedCredentialsMatcher matcher = new HashedCredentialsMatcher();

matcher.setHashAlgorithmName("md5");//加密算法

matcher.setHashIterations(1);//加密次数

customrealm.setCredentialsMatcher(matcher);

在提交认证请求前直接进行了加密,他直接和map中的数据进行的匹配,这个是你手动加盐加密的,login认证只是判断你传过来的参数,在你手动加盐加密后是否和map中或者数据库缓存中 的值一样。

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信