• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    数据库账号密码加密详解及实例

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

    数据库中经常有对数据库账号密码的加密,但是碰到一个问题,在使用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中使用replace、regexp进行正则表达式替换的用法分析
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

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