数据库账号密码加密详解及实例

 更新时间:2017年03月10日 08:34:28   投稿:lqh  
这篇文章主要介绍了数据库账号密码加密详解及实例的相关资料,需要的朋友可以参考下

数据库账号密码加密详解及实例

数据库中经常有对数据库账号密码的加密,但是碰到一个问题,在使用UserService对密码进行加密的时候,spring security 也是需要进行同步配置的,因为spring security 中验证的加密方式是单独配置的。如下:

<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自带的加密算法,很简单了,当然也可以使用复杂的加密方法,这个就靠自己了

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

相关文章

  • MySQL之死锁问题及其解决方案

    MySQL之死锁问题及其解决方案

    数据库死锁问题是我们老生常谈的问题了,在我们实际开发过程中经常会遇到,本文主要介绍了MySQL之死锁问题及其解决方案,具有一定的参考价值,感兴趣的可以了解一下
    2023-12-12
  • Innodb表select查询顺序

    Innodb表select查询顺序

    这篇文章主要介绍了Innodb表select查询顺序的相关资料,需要的朋友可以参考下
    2017-01-01
  • MySQL的字符集操作命令总结

    MySQL的字符集操作命令总结

    这篇文章主要介绍了MySQL的字符集操作命令总结,包括各种查看数据库、数据表等查询命令,需要的朋友可以参考下
    2014-04-04
  • mysql binlog(二进制日志)查看方法

    mysql binlog(二进制日志)查看方法

    在本篇文章里小编给大家分享了关于mysql binlog(二进制日志)查看方法,有需要的朋友们学习下。
    2019-01-01
  • Mysql报Table 'mysql.user' doesn't exist问题的解决方法

    Mysql报Table 'mysql.user' doesn't exist问题的解

    这篇文章主要给大家介绍了关于Mysql报Table 'mysql.user' doesn't exist问题的解决方法,初学者可能会遇到这个问题,文中通过图文将解决方法介绍的非常详细,需要的朋友可以参考下
    2022-05-05
  • Mysql数据库报错2003 Can't connect to MySQL server on 'localhost' (10061)解决

    Mysql数据库报错2003 Can't connect to MySQL server on 

    最近在用mysql,打开mysql的图形化界面要连接时出现2003错误,所以下面这篇文章主要给大家介绍了关于Mysql数据库报错2003 Can't connect to MySQL server on 'localhost' (10061)的解决方式,需要的朋友可以参考下
    2022-09-09
  • msyql show命令汇总

    msyql show命令汇总

    本篇文章是对msyql中的show命令进行了汇总,需要的朋友参考下
    2013-06-06
  • mysql如何利用binlog进行数据恢复详解

    mysql如何利用binlog进行数据恢复详解

    MySQL的binlog日志是MySQL日志中非常重要的一种日志,下面这篇文章主要给大家介绍了关于mysql如何利用binlog进行数据恢复的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
    2018-10-10
  • Linux安装mysql并配置外网访问的实例

    Linux安装mysql并配置外网访问的实例

    今天小编就为大家分享一篇Linux安装mysql并配置外网访问的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-05-05
  • Mysql出生日期转换为年龄并分组统计人数的方法示例

    Mysql出生日期转换为年龄并分组统计人数的方法示例

    这篇文章主要给大家介绍了关于Mysql出生日期转换为年龄并分组统计人数的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-11-11

最新评论