Shiro快速入门 —— 4.登陆认证(身份验证)

本文详细介绍了如何使用Shiro框架自定义登录认证规则,包括继承AuthorizingRealm类并实现doGetAuthenticationInfo方法,以及处理各种认证异常。通过示例展示了如何验证用户名、密码和验证码,并创建自定义认证异常。此外,还涵盖了登录失败后的异常处理和退出登录的操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

登陆认证用于登录时验证登陆者的身份真实性。

我们可以通过 CA证书或用户名密码等方式进行认证。

重写认证方法

shiro不会为我们提供现成的认证规则,需要我们自己编写认证规则。

编写认证规则时我们需要继承AuthorizingRealm类,并实现doGetAuthenticationInfo抽象方法。

public class ShiroRealm extends AuthorizingRealm {
   
   

    /**
     * 登录认证(身份验证)
     */
    @Override
    protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken token) throws AuthenticationException {
   
   
        /**
         * 自己实现的认证规则
         */
    }
}

认证通过

认证信息如果符合认证规则,则认证通过。

认证通过时需要返回一个认证信息接口AuthenticationInfo的实现类SimpleAuthenticationInfo

/**
 * 登录认证(身份验证)
 */
@Override
protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken token) throws AuthenticationException {
   
   
    CaptchaAuthenticationToken authenticationToken = (CaptchaAuthenticationToken) token; //获得登录令牌
    String username = authenticationToken.getUsername();
    String password = new String(authenticationToken.getPassword());//将char数组转换成String类型
    String captchaId = authenticationToken.getCaptchaId();
    String captcha = authenticationToken.getCaptcha();
    // 验证用户名密码和验证码是否正确
    usernamePasswordAndCaptchaAuthentication(username,password,captchaId,captcha);
    //创建身份信息类(自定义的)
    Principal principal = new Principal(1L, username);
    //认证通过返回认证信息类
    return new SimpleAuthenticationInfo(principal, password, getName());
}

认证失败

认证信息如果不符合认证规则,则认证不通过。

认证不通过时抛出Authenticati

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值