登录入口:
Subject subject = SecurityUtils.getSubject();
UsernamePasswordToken token = new UsernamePasswordToken(userModel.getId() + "", rsaDecryptPwd);
subject.login(token);
权限入口:
Subject subject = SecurityUtils.getSubject();
UsernamePasswordToken token = new UsernamePasswordToken(userModel.getId() + "", rsaDecryptPwd);
subject.checkRoles();
流程
- 请求进入shiroConfig中的url拦截
- 里面自定义了过滤器JwtFilter
- 在JwtFilter中,手动进行shiro登录,传入token信息
- 经过源代码分析,login方法验证token调用了ShiroRealm中的doGetAuthenticationInfo,进行token的验证
- 验证通过之后,将获取到的user信息,封装进当前线程的shiro认证信息中
- 然后调用了ShiroRealm中的doGetAuthorizationInfo,进行权限和角色的处理
- 最终完成验证
最近两天没有时间,等有时间,将完整分析过程贴上来,未完待续。。。