密码要加盐处理,这是常识。各个权限处理框架对此都有不同程度的支持,Shiro、SpringSecurity都有自家的解决方案,SpringSecurity中有一个升级版的消息摘要:
BCryptPasswordEncoder
使用BCryptPasswordEncoder,即使相同的明文,生成的新的加密字符串都是不一样的,这样可以避免像在Shiro中那样我们自己配置密码的盐,SpringSecurity中使用BCryptPasswordEncoder的具体流程如下:
注册处理
在用户注册时,我们需要对密码进行处理,处理方式如下:
1 | public int hrReg(String username, String password) { |
通过BCryptPasswordEncoder中的encode方法对密码进行处理。
当用户注册成功之后,存在数据库中的密码就像下面这样:
登录处理
密码加密处理之后,登录时候也要对密码进行处理,修改WebSecurityConfig类的configure(AuthenticationManagerBuilder auth)方法,改为下面这样即可:
1 |
|