一、Shiro 登陆架构
下面是 Shiro 的用户登陆架构图,我们根据箭头来看一下流程。

1、Token:使用用户的登录信息创建令牌
UsernamePasswordToken token = new UsernamePasswordToken(username, password, true); |
我们要先通过用户名和密码,生成一个 token,token 是一个用户令牌,用于在登陆的时候,Shiro 来验证用户是否有合法的身份。
2、Subject:执行登陆动作 (login)
Subject subject = SecurityUtils.getSubject(); // 获取 Subject 单例对象 |
再通过 Subject 来执行登陆操作,将 token 发送给 Security Manager,让他来验证这个 token。Subject 中文翻译是主题。你可以理解为它是一个用户,是 User 的抽象概念。
3、Realm:自定义代码实现登陆身份验证和访问权限控制
先来看看 Realm,你从上图可以看出,Realm 在 Shiro 方框的外面。图片很形象,因为这一部分恰恰是需要我们自己去实现的。需要我们来设计如何验证登录用户的身份 (role),和这个用户是否具有访问某个 URL 的权限 (permission)。前者使用 AuthenticationInfo(验证) 实现,后者使用 AuthorizationInfo(授权) 实现。
4、Security Manager:Shiro 架构的核心
Security Manager,是 Shiro 架构的核心,简单来说,它根据我们自定义的 Realm,去完成验证和授权工作
如果这部分没有看懂,建议先根据下面的 “与 SpringBoot2 集成” 部分,搭建一个 demo,在项目中直观体验一下了,再回来看。













