Shiro的核心概念

核心类

整体类图如下图所示:

类名 作用
Authentication 身份认证,也就是登录,验证用户是不是拥有相应的身份
Authorization 授权,也就是权限验证,验证某个已认证的用户是否拥有某个权限
Session Manager 会话管理,就是用户登录后就是一次会话,在没有退出之前,它的所有信息都在会话当中
Cryptography 加密,保护数据的安全性
Web Support Web 的支持,可以非常容易的集成到 Web环境
Caching 缓存,比如用户登录后的用户信息、拥有的角色和权限不必每次去查,这样可以提高效率
Concurrency Shiro 支持 多线程应用 的并发验证,如在一个线程中开启另一个线程,能把权限自动传播过去
Testing 提供了测试的支持
Run As 允许一个用户假装为另一个用户(如果他们允许)的身份进行访问
Remember Me 记住我,这个是非常常见的功能,即一次登录之后,下次再来的话就不用在登录了

主要概念

Subject

当前的操作用户,可以是人,爬虫,当前正在跟软件交互的东西,在 Shiro 当中我们可以统称 Subject 为 "用户" 在代码的任何地方,你都能轻易的获得 Shiro Subject,一旦获得 Subject,你就可以立即获得你希望用 Shiro 为当前用户做的 90% 的事情,也就是说你就可以使用 Shiro 为当前的用户做 90% 的事情了,登录、退出、访问会话、执行授权检查等。

SecurityManager

SecurityManager 则管理所有用户的安全操作,引用了多个内部嵌套的安全组件,是 Shiro 框架的核心,你可以把它看成是一个 DispatcherServlet 前端控制器,用于调度各种 Shiro 框架的服务

Realms

Realms 则是用户的信息认证器和用户的权限认证器,执行认证(登录)和授权(访问控制)时,Shiro 会从应用配置的 Realm 中查找很多内容,Realm 可以理解为读取用户信息、角色及权限的 DAO,SecurityManager 要验证用户的身份与权限,那么它需要从 Realm 中获取相应的信息进行比较来确定用户的身份是否合法,可以把 Realm 看成 DataSource,安全数据源。

Shiro的架构

组件名 作用
Subject(主体) 主体可以是用户也可以是程序,主体要访问系统,系统需要对主体进行认证、授权才可以进行访问
SecurityManager(安全管理器) 对主体进行认证和授权都是通过 SecurityManager 进行的
Authenticator(认证器) 主体进行认证最终通过 Authenticator 来进行认证的
Authorizer(授权器) 主体进行授权最终通过 Authenticator 来进行授权的
SessionManager(会话管理) Web 应用中一般是用 Web容器对 Session 进行管理,Shiro 也提供了一套Session管理的方式
SessionDao 通过 SessionDao 管理 Session数据
CacheManager(缓存管理器) 主要对 Session 和授权数据进行缓存,比如将授权数据通过 CacheManager 进行缓存管理,和 Ehcache 整合对缓存数据进行管理
Realm(领域) 相当于数据源,通过 Realm 存取认证、授权相关的数据
Cryptography(密码管理) 提供了一套加密和解密的组件,方便开发,比如提供常用的散列、加密和解密等功能
posted @ 2020-10-29 15:21  BNTang  阅读(129)  评论(0编辑  收藏  举报