Shiro安全框架
1、Shiro概述
Shiro是一个安全框架,它将软件系统的安全认证相关功能抽取出来,实现用户身份认证,权限授权、加密、会话管理功能,组成一个通用的安全认证框架,使用shiro可以非常快速的完成认证、授权等功能的开发,降低系统成本。
用户资源访问流程
2、Shiro架构
2.1概要架构
2.2 详细架构
核心对象:认证管理对象、授权管理对象、会话管理对象、缓存管理对象、加密管理对象、realm管理对象(领域对象:负责处理认证和授权领域的数据访问问题)。
subject:与软件交互的一个特定实体(用户、第三方服务);
SecurityManager(安全管理器):Shiro的核心,用来协调管理组件工作;
Authenticator(认证管理器):负责执行认证操作;
Authorizer(授权管理器):负责执授权检测;
SessionManager(会话管理):负责创建并管理用户Session生命周期,提供一个强有力的Session体验;
SessionDAO:代表SessionManager执行 Session 持久(CRUD)动作,它允许任何存储的数据挂接到 session 管理基础上;
CacheManager(缓存管理器):提供创建缓存实例和管理缓存生命周期的功能;
Cryptography(加密管理器):提供了加密方式的设计及管理;
Realms(领域对象):Shrio和应用程序安全数据之间的桥梁。
3、shiro认证过程
身份认证:判定用户是否是系统的合法用户。
1)系统调用subject的login方法将用户登录信息封装在token里面,然后把token交给SecurityManager;
2)SecurityManager将token认证操作委托给认证器对象Authenticator;
3)认证器对象Authenticator将用户的token信息交给realm;
4)Realm访问数据库获取用户信息然后对信息进行封装并返回;
5)Authenticator对realm返回的信息进行身份认证。
使用Shiro时可以在Service层借助realm实现,让realm继承AuthorizngRealm然后重写相关业务方法实现。
4、shiro缓存配置
当进行授权操作时每次都会从数据库查询信息,为了提高授权性能,可以将用户权限信息取出来进行缓存,下次授权时从缓存里取数据即可。实现步骤如下:
5、shiro记住我
记住我功能:用户登录成功以后,若关闭浏览器,下次再访问系统资源时,无需再执行登录操作。
前端页面点击Remeber me——值提交到控制层——服务端设置setRemeberMe()方法为true——Shrio的XML文件中添加cookie配置。
6、shiro会话时长
使用shiro框架实现认证操作,可将登录信息写入到会话对象中,默认时长30分钟,若要修改,可更改配置文件。