1、Shiro概述
Shiro是apache旗下一个开源安全框架,它将软件系统的安全认证相关的功能抽取出来,实现用户身份认证,权限授权、加密、会话管理等功能,组成了一个通用的安全认证框架。使用shiro就可以非常快速的完成认证、授权等功能的开发,降低系统成本。
2、Shiro核心三大组件
其中:
- Subject :主体对象,负责提交用户认证和授权信息。
- SecurityManager:安全管理器,负责认证,授权等业务实现。
- Realm:领域对象,负责从数据层获取业务数据。
3、Shiro详细架构
其中:
Subject(主体):与软件交互的一个特定的实体(用户、第三方服务等)。
SecurityManager(安全管理器) :Shiro 的核心,用来协调管理组件工作。
Authenticator(认证管理器):负责执行认证操作。
Authorizer(授权管理器):负责授权检测。
SessionManager(会话管理):负责创建并管理用户 Session 生命周期,提供一个强有力的 Session 体验。
SessionDAO:代表 SessionManager 执行 Session 持久(CRUD)动作,它允许任何存储的数据挂接到 session 管理基础上。
CacheManager(缓存管理器):提供创建缓存实例和管理缓存生命周期的功能。
Cryptography(加密管理器):提供了加密方式的设计及管理。
Realms(领域对象):是shiro和你的应用程序安全数据之间的桥梁。
4、Shiro之授权管理与授权的三种方式
4.1、编程方式
Subject currentUser = SecurityUtils.getSubject();
if (currentUser.hasRole("administrator")) {
//拥有角色administrator
} else {
//没有角色处理
}
4.2、注解方式
注解 意义 案例
@RequiresAuthentication 验证用户是否登录\
@RequiresUser 当前用户已经验证过了或则记住我了\
@RequiresGuest 是否是游客身份
@RequiresRoles 判断subject中有aRoleName角色才可以访问方法someMethod @RequiresRoles({“admin”})
@RequiresPermissions 需要拥有权限 @RequiresPermissions({“file:read”, “write:aFile.txt”} )
/**
- 创建日期:2017/12/20
- 创建时间:17:21:33
- 创建用户:yellowcong
- 机能概要:
*/
@Service("shiroService") public class ShiroService { @RequiresRoles({"admin"}) public void test() { System.out.println("执行了程序"); } }
4.3、jsp标签
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%--shiro 标签 --%> <%@taglib prefix="shiro" uri="shiro.apache.org/tags" %>
后台管理 - yellowcong<shiro:hasRole name="admin">
管理员
</shiro:hasRole>
<shiro:hasRole name="user">
普通用户
</shiro:hasRole>