第一次使用shiro踩坑 输入正确密码登录也会

在整合Shiro与Spring Boot的过程中遇到登录失败的问题,即使输入正确密码也无法成功。原因是Shiro在验证密码时,会将数据库中的密码密文进行Base64转换,而存入数据库时未使用相同方式处理。解决方案是确保Shiro配置中加密方式与密码存储方式一致,例如修改为使用Base64或Hex编码。
摘要由CSDN通过智能技术生成

shiro输入正确密码也会登录失败

shiro整合springBoot后登录一直失败的原因

最后发现是存入数据库的密码密文在shiro比较之前会进行一次base64的转换

上代码

shiro配置

@Configuration
public class ShiroConfig {
   


    /**
     * 加密算法
     * @return
     */
    @Bean
    public HashedCredentialsMatcher hashedCredentialsMatcher(){
   
        //加密对象
        HashedCredentialsMatcher matcher = new HashedCredentialsMatcher();
        //加密方法
        matcher.setHashAlgorithmName("md5");
        //加密次数
        matcher.setHashIterations(2);
        //加密编码方式
        matcher.setStoredCredentialsHexEncoded(false);

        return matcher;
    }

    /**
     * 自定义realm
     * @return
     */
    @Bean
    public MyRealm myRealm(){
   
        MyRealm myRealm = new MyRealm();
        myRealm.setCredentialsMatcher(hashedCredentialsMatcher());
        return myRealm;
    }



    /**
     * 安全管理器
     * @return
     */
    @Bean
    public SecurityManager securityManager(){
   
        DefaultWebSecurityManager securityManager = new DefaultWebSecurityManager();
        securityManager.setRealm(myRealm());
        return securityManager;
    }


    /**
     * shiro
     * @return
     */
    @Bean
    public ShiroFilterFactoryBean shiroFilter(){
   
        ShiroFilterFactoryBean shiroFilterFactoryBean = new ShiroFilterFactoryBean();
        shiroFilterFactoryBean.setSecurityManager(securityManager());
        Map<String,String> filterChainDefinitionMap = new HashMap<>(16)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值