java私塾 shiro_第二章:Shiro入门——深入浅出学Shiro细粒度权限开发框架——私塾在线原创...
nShiro是什么
Apache Shiro是一个强大易用的Java安全框架,提供了认证、授权、加密和会话管理等功能
nShiro能做什么
认证:验证用户来核实他们的身份
授权:对用户执行访问控制,如:
判断用户是否被分配了一个确定的安全角色
判断用户是否被允许做某事
会话管理:在任何环境下使用Session API,即使没有Web 或EJB 容器。
加密:以更简洁易用的方式使用加密的功能,保护或隐藏数据防止被偷窥
Realms:聚集一个或多个用户安全数据的数据源,并作为一个单一的复合用户“视图”。
启用单点登录(SSO)功能。
为没有关联到登录的用户启用"Remember Me"服务
Shiro的四大部分——身份验证,授权,会话管理和加密
· Authentication:有时也简称为“登录”,这是证明用户是他们所说的他们是谁的行为。
· Authorization:访问控制的过程,也就是绝对“谁”去访问“什么”。
· Session Management:管理用户特定的会话,即使在非Web 或EJB 应用程序。
· Cryptography:通过使用加密算法保持数据安全同时易于使用
n除了以上功能,shiro还提供很多扩展
Web Support:主要针对web应用提供一些常用功能。
Caching:缓存可以使应用程序运行更有效率。
Concurrency:多线程相关功能。
Testing:帮助我们进行测试相关功能
"Run As":一个允许用户假设为另一个用户身份(如果允许)的功能,有时候在管理脚本很有用。
“Remember Me”:记住用户身份,提供类似购物车功能。
nSubject
Subject 实质上是一个当前执行用户的特定的安全“视图”。Subject 可以是一个人,也可以代表第三方服务,或其他类似的任何东西——基本上是当前正与软件进行交互的任何东西。
所有Subject 实例都被绑定到(且这是必须的)一个SecurityManager 上。当你与一个Subject 交互时,那些交互作用转化为与SecurityManager 交互的特定subject 的交互作用。
nSecurityManager
SecurityManager 是Shiro 架构的心脏,用来协调内部的安全组件共同构成一个对象图,管理内部组件实例,并通过它来提供安全管理的各种服务。
实际开发中,程序人员主要与Subject交互,但是要认识到,当你正与一个Subject 进行交互时,实质上是幕后的SecurityManager 处理所有繁重的Subject 安全操作。
nRealms
Realms 担当Shiro 和你的应用程序的安全数据之间的“桥梁”或“连接器”。当它实际上与安全相关的数据如用来执行身份验证(登录)及授权(访问控制)的用户帐户交互时,Shiro 从一个或多个为应用程序配置的Realm 中寻找许多这样的东西。
Realm 本质上是一个特定安全的DAO:它封装了数据源的连接详细信息,使Shiro 所需的相关的数据可用。当配置Shiro 时,你必须指定至少一个Realm 用来进行身份验证和/或授权。SecurityManager可能配置多个Realms,但至少有一个是必须的。
Shiro 提供了立即可用的Realms 来连接一些安全数据源(即目录),如LDAP,关系数据库(JDBC),文本配置源,像INI 及属性文件,以及更多。你可以插入你自己的Realm 实现来代表自定义的数据源,如果默认地Realm 不符合你的需求。
nAuthenticator :是一个执行对用户的身份验证(登录)的组件。Authenticator 知道如何与一个或多个Realm 协调来存储相关的用户/帐户信息。从这些 Realm 中获得的数据被用来验证用户的身份来保证用户确实是他们所说的他们是谁。
n如果存在多个realm,则接口AuthenticationStrategy会确定什么样算是登录成功(例如,如果一个Realm成功,而其他的均失败,是否登录成功?)。
nAuthorizer :授权实质上就是访问控制 - 控制用户能够访问应用中的哪些内容,比如资源、Web页面等等。
nSessionManager :提供可在任何应用或架构层一致地使用Session API。
nSessionDAO:代表SessionManager 执行Session 持久化(CRUD)操作。
nCacheManager :对Shiro的其他组件提供缓存支持。
nCryptography:Shiro的api大幅度简化java api中繁琐的密码加密
nRealms:Realms 在Shiro 和你的应用程序的安全数据之间担当“桥梁”或“连接器”。简单的说,shiro通过Realms来获取相应的安全数据
Shiro
的
HelloWorld
n构建开发和运行环境:
1:在eclipse里面创建一个基本的java工程
2:加入所需要的jar包
n在src下创建TestShiro.ini文件,内容如下:
[users]
javass = cc,role1
[roles]
role1 = p1,p2
n创建cn.javass.hello包,并创建HelloWorld类
public class HelloWorld {
public static void main(String[] args) {
Factory f = new IniSecurityManagerFactory("classpath:TestShiro.ini");
org.apache.shiro.mgt.SecurityManager s = f.getInstance();
SecurityUtils.setSecurityManager(s);
UsernamePasswordToken token = new UsernamePasswordToken("javass","cc");
token.setRememberMe(true);
Subject currentUser = SecurityUtils.getSubject();
currentUser.login(token);
boolean flag = currentUser.isPermitted("p1");
System.out.println("flag==" + flag);
}
}
java私塾 shiro_第二章:Shiro入门——深入浅出学Shiro细粒度权限开发框架——私塾在线原创...相关推荐
- shiro 方法级别细粒度权限控制_第四章:Shiro的身份认证(Authentication)——深入浅出学Shiro细粒度权限开发框架——私塾在线原创...
nStep3:SubjectManager 接收token 以及简单地委托给内部的Authenticator 实例通过调用authenticator.authenticate(token).这通常是一 ...
- 语言求余和乘除优先级_愉快地学Java语言:第二章基本程序设计 第2讲
导读 本文适合Java入门,不太适合Java中高级软件工程师. 本文以<Java程序设计基础篇>第10版为蓝本,采用不断提出问题,然后解答问题的方式来讲述. 本篇文章只是这个系列中的一篇, ...
- 计量经济学及Stata应用 第二章 Stata入门
第二章 Stata入门 2.3 Stata操作实例 打开数据文件 use file_path,clear (clear用于清空内存中的数据) 审视数据 观看数据集中的变量名.标签等 describe ...
- Vert.x Java开发指南——第二章 使用Vert.x编写最小可用Wiki
第二章 使用Vert.x编写最小可用Wiki 版权声明:本文为博主自主翻译,转载请标明出处. https://blog.csdn.net/elinespace/article/details/8037 ...
- 网页设计与制作:第一章HTML与CSS网页设计概述与第二章HTML入门
第一节:Web基本概念 1,认识网页 (1)网页主要有文字,图像和超链接等元素构成: 2,名词解释 (1)internet:就是通常所说的因特网,是由一些使用公用语言互相通信的计算机连接而成的网络. ...
- 【JAVA SE】第二章 Java语法基础、数据类型、基本类型的字面值、基本类型的类型转换和运算规则
第二章 Java语法基础.数据类型.基本类型的字面值.基本类型的类型转换.运算规则和标识符命名风格 文章目录 第二章 Java语法基础.数据类型.基本类型的字面值.基本类型的类型转换.运算规则和标识符 ...
- Java天之痕第二章攻略_轩辕剑参外传:天之痕主线详细攻略大全
本文小编为您带来轩辕剑参外传:天之痕主线详细攻略大全,至于这次的游戏,在战斗方面基本没有什么难度,只要稍微注意一下属性相克就可以了. 玩家在游戏初期可以得到一只符鬼,你必须选择它的属性.共有金.木.水 ...
- Java天之痕第二章攻略,轩辕剑参外传:天之痕第二章过关方法图解
轩辕剑参外传:天之痕在游戏的第二章里面,我们又有什么样的剧情发生呢?下面笨手机小编为大家带来轩辕剑参外传:天之痕第二章的图文攻略,一起来看看吧. 到北方的黑山镇(可以先去东南方的芦家渡买装备)--买黄 ...
- Java天之痕第二章攻略_轩辕剑参外传天之痕第二章怎么过 通关图文攻略
刚刚给大家介绍了一下第一章的图文攻略,现在给大家说下第二章,在第二章的剧情里面,我们来到黑山镇,具体的剧情攻略如下: 到北方的黑山镇(可以先去东南方的芦家渡买装备)--买黄色药材3个(买齐五色药材到洛 ...
- 大型网站系统与Java中间件实践 第二章大型网站及其架构演进过程
2.1什么是大型网站 通过第 1 章我们了解了分布式系统的相关基础知识, 大型网站是一种很常见的分布式系统,而本书重点要介绍的中间件系统也是在大型网站的架构变化中出现并发展的,那么我们很有必要从大型网 ...
最新文章
- 2400门课:MIT开放迄今最全CS+电气工程课程
- css(面试第2天)用css绘制三角形
- 以下哪个选项不是单例模式的优点_深度解密Python单例模式
- 初识ABP vNext(11):聚合根、仓储、领域服务、应用服务、Blob储存
- 无法初始化java类_myeclip运行java程序不能初始化类 NoClassDefFoundError
- *【牛客 - 301哈尔滨理工大学软件与微电子学院第八届程序设计竞赛同步赛(高年级)】小乐乐打游戏(bfs,双元bfs,思维)
- hamburger组件_一个侧边栏导航组件实现思路
- 3.2 SE11创建数据元素
- Linux指令:AWK - 可编程流编辑器
- 详解Linux上iptables配置命令及常见的生产环境防火墙规则
- CCF201612-1 中间数(解法三)(100分)(废除!!!)
- java plugin firefox_Firefox 中使用 Java 插件
- Grasshopper学习手册第二版资源
- 用ie浏览器签章后保存在桌面显示不出文件
- 设为主页代码及添加到收藏夹代码大全
- Wiener Filtering
- Mysql 四舍五入 取整
- mesh 协调器 路由器_双模网络协调器、双模路由器、双模mesh组网系统及其方法与流程...
- CTF MD5之守株待兔,你需要找到和系统锁匹配的钥匙
- PAT日志 1035