数据库账号密码加密
2016-01-11 17:16
501 查看
数据库中经常有对数据库账号密码的加密,但是碰到一个问题,在使用UserService对密码进行加密的时候,spring security 也是需要进行同步配置的,因为spring security 中验证的加密方式是单独配置的。如下:
如上述配置文件所示,passwordEncoder才是在spring security对账号加密校验的地方。
spring security在拦截之后,会首先对用户进行查找,通过自己定义的userDetailService来找到对应的用户,然后由框架进行密码的匹配验证。
从userDetailService得到user以后,就会进入到DaoAuthenticationProvider中,这是框架中定义的
然后跳入其中的authenticate方法中。
该方法会进行两个检查,分别是
而PasswordEncoder是我们xml中注入的bean,所以了,我们调用的则是我们自己完成的passwordEncoder
这是我对其实现的一个简单版本,调用的就是spring自带的加密算法,很简单了,当然也可以使用复杂的加密方法,这个就靠自己了
<authentication-manager> <authentication-provider user-service-ref="userDetailService"> <password-encoder ref="passwordEncoder" /> </authentication-provider> </authentication-manager> <beans:bean class="com.sapphire.security.MyPasswordEncoder" id="passwordEncoder"> <beans:constructor-arg value="md5"></beans:constructor-arg> </beans:bean>
如上述配置文件所示,passwordEncoder才是在spring security对账号加密校验的地方。
spring security在拦截之后,会首先对用户进行查找,通过自己定义的userDetailService来找到对应的用户,然后由框架进行密码的匹配验证。
从userDetailService得到user以后,就会进入到DaoAuthenticationProvider中,这是框架中定义的
然后跳入其中的authenticate方法中。
该方法会进行两个检查,分别是
* preAuthenticationChecks : 主要进行的是对用户是否过期等信息的校验,调用的方法在userDetail中有定义的。 * additionalAuthenticationChecks : 这个就是用户名密码验证的过程了。
而PasswordEncoder是我们xml中注入的bean,所以了,我们调用的则是我们自己完成的passwordEncoder
public class MyPasswordEncoder extends MessageDigestPasswordEncoder { public MyPasswordEncoder(String algorithm) { super(algorithm); } @Override public boolean isPasswordValid(String encPass, String rawPass, Object salt) { return encPass.equals(DigestUtils.md5DigestAsHex(rawPass.getBytes())); } }
这是我对其实现的一个简单版本,调用的就是spring自带的加密算法,很简单了,当然也可以使用复杂的加密方法,这个就靠自己了
相关文章推荐
- sql 数据库备份还原脚本
- 安装GI过程中DD清理磁盘头信息后没有重新oracleasm createdisk 导致重启服务器后找不到ASM磁盘
- 逻辑数据库设计 - 需要ID(谈主键Id)
- 非域环境配置ms-sql镜像
- SQl 判断 表 视图 临时表等 是否存在
- mysql中的结果拼接
- 复杂sql 语句
- 一些Oracle数据库中的查询优化建议综合
- Mysql代理中间件 Atlas 安装和配置
- mysql知识和sql语句分享
- 逻辑数据库设计 - 无视约束(谈外键)
- mysql权限丢失
- SQL Server 2000 发布与订阅
- min(case..,rank over--工作备忘2016/1/9
- SQL Update多表联合更新的方法
- MySQL数据库的优化(二)
- 学习Sqlite3 (一)
- MySQL数据库的优化(一)
- Oracle12c中性能优化&功能增强新特性之临时undo
- Java的redis控制台-Jedis