为了账号安全,请及时绑定邮箱和手机立即绑定

SpringBoot Shiro 配置自定义密码加密器

标签:
Java SpringBoot

SpringBoot Shiro 配置自定义密码加密器

自定义认证加密方式

/**
 * 自定义认证加密方式
 */
public static class CustomCredentialsMatcher extends SimpleCredentialsMatcher {
    @Override
    public boolean doCredentialsMatch(AuthenticationToken authcToken, AuthenticationInfo info) {
        UsernamePasswordToken token = (UsernamePasswordToken) authcToken;
        //加密类型,密码,盐值,迭代次数
        Object tokenCredentials = new SimpleHash("md5", password, username, 2).toHex();
        //数据库存储密码
        Object accountCredentials = getCredentials(info);
        //将密码加密与系统加密后的密码校验,内容一致就返回true,不一致就返回false
        return equals(tokenCredentials, accountCredentials);
    }
}

第一种方式:配置Bean

/**
 * Shiro自带密码管理器
 *
 * @return HashedCredentialsMatcher
 */
@Bean
public HashedCredentialsMatcher hashedCredentialsMatcher() {
  //Shiro自带加密
  HashedCredentialsMatcher credentialsMatcher = new HashedCredentialsMatcher();
  //散列算法使用md5
  credentialsMatcher.setHashAlgorithmName("md5");
  //散列次数,2表示md5加密两次
  credentialsMatcher.setHashIterations(2);
  credentialsMatcher.setStoredCredentialsHexEncoded(true);
  return credentialsMatcher;
}

/**
 * 将自己的身份验证器验证方式加入容器
 *
 * @return CustomRealm
 */
@Bean
public CustomRealm shiroRealm() {
  CustomRealm shiroRealm = new CustomRealm();
  //shiroRealm.setCacheManager(cacheManager());
  //加入密码管理
  //shiroRealm.setCredentialsMatcher(hashedCredentialsMatcher());//Shiro自带密码管理器
  shiroRealm.setCredentialsMatcher(new CustomCredentialsMatcher());//自定义密码管理器
  return shiroRealm;
}

第二种方式:实现AuthorizingRealm类setCredentialsMatcher方法

public class CustomRealm extends AuthorizingRealm {
  ...
  ...
  ...
    /**
     * 设置自定义认证加密方式
     *
     * @param credentialsMatcher 默认加密方式
     */
    @Override
    public void setCredentialsMatcher(CredentialsMatcher credentialsMatcher) {
    		//自定义认证加密方式
        CustomCredentialsMatcher customCredentialsMatcher = new CustomCredentialsMatcher();
        // 设置自定义认证加密方式
        super.setCredentialsMatcher(customCredentialsMatcher);
    }
}
点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消