使用了 HashedCredentialsMatcher 后密码并没有加密?
不太清楚有没有碰到密码没有真正加密的问题...吾辈在 CustomRealm 中对传进来的密码进行了断点查看发现并没有加密(还是明文), 老师的课程中没有对比密码, 不知道会不会有没有问题呢? (」゜ロ゜)」
查看传入的 token 的值
不太清楚有没有碰到密码没有真正加密的问题...吾辈在 CustomRealm 中对传进来的密码进行了断点查看发现并没有加密(还是明文), 老师的课程中没有对比密码, 不知道会不会有没有问题呢? (」゜ロ゜)」
查看传入的 token 的值
2018-04-27
同学你好,你配置的只是shiro验证的加密规则,在你保存的时候并没有去加密,所以数据库里的密码还是明文,你在保存的方法那里设置一下加密算法名字,加密次数,盐值即可。例子如下:
public void insert(User user1) { //对用户密码进行加盐处理 String salt = RandomStringUtils.randomAlphabetic(20); user.setPassword(new SimpleHash("MD5",user1.getPassword(),salt,20).toHex()); user1.setPassword(new Sha256Hash(user1.getPassword(),salt,20).toHex()); user1.setSalt(salt); this.save(user1); }
你看的密码没有加密是正确的,
HashedCredentialsMatcher中的 public boolean doCredentialsMatch(AuthenticationToken token, AuthenticationInfo info) { Object tokenHashedCredentials = hashProvidedCredentials(token, info); Object accountCredentials = getCredentials(info); return equals(tokenHashedCredentials, accountCredentials); } 方法会对传过来的明文密码按照HashedCredentialsMatcher对象的设置进行加密,然后与数据库里面的加密密码进行比对的
举报