(转)shiro权限框架详解03-shiro介绍
http://blog.csdn.net/facekbook/article/details/54893740
shiro介绍
本文正式进入主题。本文将介绍如下内容:
- 什么是shiro
- 为什么需要学习shiro
- shiro架构
- shiro的jar包
什么是shiro
Apache Shiro(日语“堡垒(Castle)”的意思)是一个强大易用的Java安全框架,提供了认证、授权、加密和会话管理功能,可为任何应用提供安全保障 - 从命令行应用、移动应用到大型网络及企业应用。—— [ 百度百科 ]
为什么要学习shiro
shiro已经将安全认证相关的功能抽取出来组成一个框架,使用shiro就可以非常快速的完成认证、授权等功能的开发,降低系统开发成本。
shiro使用广泛,shiro可以运行在web应用、非web应用、集群分布式应用中越来越多的用户开始使用shiro。
java领域中spring security也是一个开源的权限管理框架,但是spring security依赖spring运行,而shiro就相对独立,最主要因为shiro使用简单、灵活。
shiro架构
shiro的整体架构图如下: 
架构图分析
图中的subject就是请求主体。subject请求都交给Security Manager进行处理。Security Manager是暴露给主体请求的唯一一个接口。
在Security Manager 中又有Authenticator、Authorized、
SessionManager、Realm、SessionDAO和Cache Manager模块。下面会详细介绍这些模块的作用。
Subject
Subject即主体,外部应用与 subject进行交互,subject记录了当前操作用户,将用户的理解为当前操作的主体,可以是通过浏览器请求的用户,也可能是一个运行的程序。
Subject在shiro中是一个接口,接口中定义了很多认证授权的方法,外部程序通过subject进行认证授权,而subject通过Security Manager安全管理器进行认证授权。
Security Manager
Sercurity Manager即安全管理器,对所有的subject进行管理,它是shiro的核心,负责对所有的subject进行安全管理。通过Security Manager可以完成对shiro的认证、授权等,但是实质上Security Manager是通过Authenticator进行认证、通过Authorizer进行授权、通过sessionManager进行会话管理等。
SecurityManager是一个接口,继承了Authenticator、Authorizer、SessionManager这三个接口。
Authenticator
Authenticator即认证器,对subject身份进行认证,Authenticator是一个接口,shiro提供了ModularRealmAuthenticator实现类,通过ModularRealmAuthenticator基本上可以满足大多数的需求,也可以自定义认证器。
Authorizer
Authorizer即授权器,subject认证通过后,在访问功能时需要通过授权器判断用户是否有此功能的操作权限。
Realm
realm即域,相当于DataSource数据源,securityManager进行安全认证需要通过realm获取用户权限数据,比如:如果用户身份信息存储在数据库那么realm就需要从数据库获取用户身份信息。
注意: 不要把realm理解成只是从数据源取数据,在realm中还有认证授权校验相关的代码。
Session Manager
sessionManager 即会话管理,shiro框架提供了一套会话管理,它不依赖web容器的session,所以shiro可以使用在非web环境中,也可以将分布式应用的会话集中在一点管理,此特性可使它实现单点登录。
sessionDAO
sessionDAO即会话管理DAO,是对session会话管理操作的一套接口,比如要将session存储到数据库,可以使用jdbc将会话存储到数据库。
CacheManager
CacheManager即缓存管理,将用户权限存储在缓存,可以提高性能。
Crypography
crypography即密码管理,shiro提供了一套加密/解密的组件,方便开发。提供了常用的散列、加/解密算法。
shiro的jar包
与其他Java开源项目一样,只需要加入jar包就可以开始使用shiro 了。shiro-core.jar是必选的,还提供了与web整合的shiro-web、与spring整合的shiro-spring、与任务调度quartz整合的shiro-quartz等,下面给出shiro各jar包的maven坐标。
<dependency>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-core</artifactId>
<version>1.2.3</version>
</dependency>
<dependency>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-web</artifactId>
<version>1.2.3</version>
</dependency>
<dependency>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-spring</artifactId>
<version>1.2.3</version>
</dependency>
<dependency>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-ehcache</artifactId>
<version>1.2.3</version>
</dependency>
<dependency>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-quartz</artifactId>
<version>1.2.3</version>
</dependency>
当然也可以引入shiro-all包括shiro所有的jar包,但是不建议使用。还是用到什么引入什么。
<dependency>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-all</artifactId>
<version>1.2.3</version>
</dependency>
(转)shiro权限框架详解03-shiro介绍的更多相关文章
- (转) shiro权限框架详解06-shiro与web项目整合(上)
http://blog.csdn.net/facekbook/article/details/54947730 shiro和web项目整合,实现类似真实项目的应用 本文中使用的项目架构是springM ...
- (转)shiro权限框架详解06-shiro与web项目整合(下)
http://blog.csdn.net/facekbook/article/details/54962975 shiro和web项目整合,实现类似真实项目的应用 web项目中认证 web项目中授权 ...
- (转)shiro权限框架详解05-shiro授权
http://blog.csdn.net/facekbook/article/details/54910606 本文介绍 授权流程 授权方式 授权测试 自定义授权realm 授权流程 开始构造Secu ...
- (转)shiro权限框架详解02-权限理论介绍
http://blog.csdn.net/facekbook/article/details/54893042 权限管理解决方案 本文主要介绍权限管理的解决方法: 粗颗粒度和细颗粒度 基于url拦截 ...
- (转) shiro权限框架详解04-shiro认证
http://blog.csdn.net/facekbook/article/details/54906635 shiro认证 本文介绍shiro的认证功能 认证流程 入门程序(用户登录和退出) 自定 ...
- (转)shiro权限框架详解01-权限理论介绍
http://blog.csdn.net/facekbook/article/details/54890365 权限管理 本文介绍权限管理的理论和权限管理的一些名词. 介绍权限管理 理解身份认证和授权 ...
- Shiro 安全框架详解二(概念+权限案例实现)
Shiro 安全框架详解二 总结内容 一.登录认证 二.Shiro 授权 1. 概念 2. 授权流程图 三.基于 ini 的授权认证案例实现 1. 实现原理图 2. 实现代码 2.1 添加 maven ...
- Shiro 安全框架详解一(概念+登录案例实现)
shiro 安全框架详细教程 总结内容 一.RBAC 的概念 二.两种常用的权限管理框架 1. Apache Shiro 2. Spring Security 3. Shiro 和 Spring Se ...
- Shiro权限管理框架详解
1 权限管理1.1 什么是权限管理 基本上涉及到用户参与的系统都要进行权限管理,权限管理属于系统安全的范畴,权限管理实现对用户访问系统的控制,按照安全规则或者安全策略控制用户可以访问而且只能访问自己被 ...
随机推荐
- let、var、const用法区别
1.var var 声明的变量为全局变量,并会进行变量提升:也可以只声明变量而不进行赋值,输出为undefined,以下写法都是合法的. var a var a = 123 2.let let 声明 ...
- Python学习【第1篇】:环境配置
1. 下载安装包 https://www.python.org/ftp/python/2.7.14/python-2.7.14.amd64.msi # 2.7安装包 https://www. ...
- Windows下Jupyter notebook 修改默认打开(工作、保存)文件夹(路径)
今天晚上兴致一起突然想看看我写了那么多的ipynb文件都去哪了 首先查了一下,应该是都默认保存到 C:\Users\芩溪儿 路径下了 然后我就想,我是不是得改改啊,总在那跟别的文件夹在一起总 ...
- nyoj4-ASCII码排序
ASCII码排序 时间限制:3000 ms | 内存限制:65535 KB 难度:2 描述 输入三个字符(可以重复)后,按各字符的ASCII码从小到大的顺序输出这三个字符. 输入 第一行输入一个数N, ...
- Java代码规范和一些常见问题
本文中的代码规范,是Java标准代码规范中的一小部分,在我看来,是最重要的一部分. 理想目标:不需要写注释,不需要和别人介绍,别人就知道你的项目大致是做什么的,每个类大概实现了什么功能. ...
- POJ 1696
这题是明显的TU包变形. 使用卷包裹法可解,而且是必定可以经过所有点的.直观可知,当经过某点后,相当于把之前的点抹去,求剩下点的TU包,递归下去,也就能把点全部经过了. 于是,只需把经过的点标记一下就 ...
- 6款程序猿不得不爱的bootstrap模板
bootstrap模板是前端project师们的最爱!假设你还没有開始使用Bootstrap模板,那你可真是有够OUT,这是一个帮助你高速开发的工具.Bootstrap是基于jQuery框架开发的,它 ...
- C++开发人脸性别识别教程(12)——加入性别识别功能
经过之前几篇博客的解说,我们已经成功搭建了MFC应用框架,并实现了主要的图像显示和人脸检測程序,在这篇博文中我们要向当中加入性别识别代码. 关于性别识别,之前已经专门拿出两篇博客的篇幅来进行解说.这里 ...
- MFC 程序的运行流程
CWinApp::InitApplication CMyWinApp::InitInstance CMyFrameWnd::CMyFrameWnd CFrameWnd::Create CWnd::Cr ...
- Powershell 渗透测试工具-Nishang
Powershell 渗透测试工具-Nishang 分享到: 作者:V1ct0r 稿费:500RMB(不服你也来投稿啊!) 投稿方式:发送邮件至linwei#360.cn,或登陆网页版在线投稿 传送门 ...