美文网首页
Shiro学习笔记--自定义密码校验逻辑

Shiro学习笔记--自定义密码校验逻辑

作者: 皮多堡 | 来源:发表于2018-05-07 18:17 被阅读0次
  1. 定义 自定义密码匹配器bean credentialsMatcher
    <bean id="myRealm" class="cn.org.celay.realm.MyRealm">
        <property name="credentialsMatcher" ref="customCredentialsMatcher"/>
    </bean>
    <bean id="customCredentialsMatcher" class="cn.org.celay.shiro.matcher.CustomCredentialsMatcher"/>

  1. 可以看到shiro源码中默认的AuthenticatingRealm



  1. 重写doCredentialsMatch方法 返回boolean(认证是否通过),其中的认证逻辑可以自定义,比如这里讲密码MD5加密转为大写,另外可以做密码校验次数校验(比如连续5次密码错误锁定账号)
public class CustomCredentialsMatcher  extends SimpleCredentialsMatcher {
    @Override
    public boolean doCredentialsMatch(AuthenticationToken authcToken, AuthenticationInfo info) {
        UsernamePasswordToken token = (UsernamePasswordToken) authcToken;
        Object tokenCredentials = encrypt(String.valueOf(token.getPassword()));
        Object accountCredentials = getCredentials(info);
        boolean retult = equals(tokenCredentials, accountCredentials);
        if (!retult) {
            //todo  密码错误次数加一
        }
        return retult;
    }

    /**
     * MD5加密---md5转为大写
     */
    private String encrypt(String data) {
        if (StringUtils.isBlank(data)) {
            return StringUtils.EMPTY;
        }
        return new Md5Hash(data).toString().toUpperCase();
    }
}

相关文章

网友评论

      本文标题:Shiro学习笔记--自定义密码校验逻辑

      本文链接:https://www.haomeiwen.com/subject/dtbvrftx.html