码迷,mamicode.com
首页 > 其他好文 > 详细

shiro认证过程

时间:2020-07-15 16:05:31      阅读:76      评论:0      收藏:0      [点我收藏+]

标签:实现   onclick   EDA   col   pass   联系   open   params   sed   

shiro的认证过程源码分析

1.程序登录入口,页面传递地参数userName,password ,loginType3个参数,用 LoginUser 对象接收。loginType 为登录方式,因为我这里有多种登录方式,因此用这个字段来区分。不同的登录方式,采用不同的token封装登录信息。登录的过程就是调用Subject 的login方法,参数为封装登录信息的token。shiro用抛异常的方式来反馈登录结果,不同的异常代表不同的反馈结果。

技术图片
public ResultBean login(LoginUser loginUser) {
        String userName = loginUser.getUserName();
        String password = loginUser.getPassword();
        String loginType = loginUser.getLoginType();

        if (StringUtils.isAnyBlank(userName, password, loginType)) {
            return ResultBean.paramsError();
        }

        Subject subject = SecurityUtils.getSubject();
        AuthenticationToken token = null;
        if (PASSWORD_LOGIN.equals(loginType)) {
            token = new UsernamePasswordToken(userName, password);
        } else if (CODE_LOGIN.equals(loginType)) {
            token = new PhoneCodeToken(userName, password);
        } else {
            return ResultBean.failure("不支持的登录方式");
        }

        String errorMsg = "";
        try {
            subject.login(token);return ResultBean.success(user);
        } catch (UnknownAccountException e) {
            errorMsg = "无效账户";
        } catch (IncorrectCredentialsException e) {
            errorMsg = "密码错误";
        } catch (CodeErrorException e) {
            errorMsg = "验证码错误/已过期";
        } catch (LockedAccountException e) {
            errorMsg = "用户已冻结";
        } catch (AuthenticationException e) {
            errorMsg = "登录异常,请联系管理员";
            logger.error("登录异常,{}", e.getMessage());
        }
        return ResultBean.failure(errorMsg);
    }
View Code

2.重点看subject.login(token)方法。跟踪进去,看到DelegatingSubject类的login()方法。DelegatingSubject为subject接口的实现类。可以看到,在login()方法里面,调用SecurityManager的login()方法。

技术图片

 

shiro认证过程

标签:实现   onclick   EDA   col   pass   联系   open   params   sed   

原文地址:https://www.cnblogs.com/step-and-step/p/13304868.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!