欢迎来到代码驿站!

JAVA代码

当前位置:首页 > 软件编程 > JAVA代码

Springboot整合Shiro之加盐MD5加密的方法

时间:2022-11-26 10:22:00|栏目:JAVA代码|点击:

1.自定义realm,在Shiro的配置类中加入以下bean

/**
  * 身份认证 realm
  */
 @Bean
 public MyShiroRealm myShiroRealm(){
  MyShiroRealm myShiroRealm = new MyShiroRealm();
  System.out.println("myShiroRealm 注入成功");
  return myShiroRealm;
 }

2.重写方法

// 身份认证
 @Override
 protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken authenticationToken) throws AuthenticationException {
  String username = (String) authenticationToken.getPrincipal();
  System.out.println("MyShiroRealm.....doGetAuthenticationInfo");
  UserInfo user=null;
  try {
   user = iUserInfoService.findByUsername(username);
  }catch (Exception e){
   e.printStackTrace();
  }
  if (user==null){
   return null;
  }
  // 进行验证,将正确数据讲给shiro处理
  SimpleAuthenticationInfo authenticationInfo = new SimpleAuthenticationInfo(
    user,
    user.getPassword(),
    ByteSource.Util.bytes(user.getCredentialsSalt()), // 加盐后的密码
    getName() // 指定当前 Realm 的类名
  );

  // 返回给安全管理器,由 securityManager 比对密码的正确性
  return authenticationInfo;
 }

需要注意的是SimpleAuthenticationInfo 类,我们需要把数据交给他,格式为(用户,用户密码,盐,当前Realm的类名)

  // 进行验证,将正确数据讲给shiro处理
  SimpleAuthenticationInfo authenticationInfo = new SimpleAuthenticationInfo(
    user,
    user.getPassword(),
    ByteSource.Util.bytes(user.getCredentialsSalt()), // 加盐后的密码
    getName() // 指定当前 Realm 的类名
  );

3.你还需要告诉shiro你是经过加密的,在Config内新建如下bean

@Bean
 public HashedCredentialsMatcher hashedCredentialsMatcher(){
  HashedCredentialsMatcher hashedCredentialsMatcher = new HashedCredentialsMatcher();
  // 使用md5 算法进行加密
  hashedCredentialsMatcher.setHashAlgorithmName("md5");
  // 设置散列次数: 意为加密几次
  hashedCredentialsMatcher.setHashIterations(2);

  return hashedCredentialsMatcher;
 }

并注册:

 @Bean
 public MyShiroRealm myShiroRealm(){
  MyShiroRealm myShiroRealm = new MyShiroRealm();
  // 配置 加密 (在加密后,不配置的话会导致登陆密码失败)
  myShiroRealm.setCredentialsMatcher(hashedCredentialsMatcher()); //+++++++++++
  System.out.println("myShiroRealm 注入成功");
  return myShiroRealm;
 }

总结

上一篇:SpringBoot的三大开发工具小结

栏    目:JAVA代码

下一篇:Java集合框架之Map详解

本文标题:Springboot整合Shiro之加盐MD5加密的方法

本文地址:http://www.codeinn.net/misctech/219946.html

推荐教程

广告投放 | 联系我们 | 版权申明

重要申明:本站所有的文章、图片、评论等,均由网友发表或上传并维护或收集自网络,属个人行为,与本站立场无关。

如果侵犯了您的权利,请与我们联系,我们将在24小时内进行处理、任何非本站因素导致的法律后果,本站均不负任何责任。

联系QQ:914707363 | 邮箱:codeinn#126.com(#换成@)

Copyright © 2020 代码驿站 版权所有