(一)Shiro,久闻其名,而今初相识
多说一句,在学习shiro之前,我觉得应该先用 filter ,自己动手写过粗粒度的权限系统,而不要一上来就使用框架。
shiro简介
shiro
系出名门Apache
,是一个权限框架。- 可以在
javaSE
、javaEE
环境中使用。 shiro
可以完成认证,授权,加密,会话管理,缓存等功能;- 与
spring security
比较,不落下风,更胜一筹,胜在简洁易用,胜在不依赖任何框架,spring security
依赖于spring
,但是spring security
可以控制粒度更细。。。
功能介绍
Authentication
登陆/身份认证在登陆的时候,验证某个用户是否拥有相应的身份,也就是是否是系统的使用人员;
Authorization
授权/权限认证验证某个已经认证通过,成功登陆的用户,是否拥有某个权限,一般是判断该身份拥有的角色的权限;
Session Manger
会话管理用户登陆以后,在没有退出之前,用户的所有信息都保存在会话中,如果是在
WEB
环境中,则是HttpSession
,如果实在JavaSE
环境中,则是由shiro
提供的session
;Cryptography
加密对数据进行加密。比如讲密码加密存进数据库里面;
Web Support Web
支持Web
支持,很容易的集成到Web
环境中 ;Caching
缓存用户登录以后,对其信息,比如角色/权限信息进行缓存,下次再用的时候,不用再去查数据库,可以提供效率 ;
Concurrency
多线程认证Shiro
支持多线程的并发认证,即一个线程中开启另外一个线程,可以将权限传播过去 ;Testing
提供测试支持;
Run As
允许一个用户伪装成另外一个用户的身份进行访问,如果允许的话 ;
Remember Me
记住我,成功登陆一次以后,下次不再需要登陆 ;
从外部看 Shiro 架构
Application Code
即应用程序代码 ;
Subject
与应用程序代码直接交互的对象就是
Subject
,代表当前用户 ,在shiro
看来,任何东西,只要你与应用程序代码进行交互了,就把你看做是一个Subject
,不管你是具体的人,还是只是爬虫,统统都看作Subject
。Subject
其实像一个对外暴露接口一样,只是门面,任何具体的操作,都交给了后面的SecurityManager
;SecurityManager
安全管理器,所有安全相关的操作,都会与它进行交互,比如认证、授权等功能;
它是
Subject
背后的大BOSS
,管理所有的Subject
,也是整个Shiro
的中央枢纽,类比于springMvc
的 前端控制器;。连接
Subject
与Realm
,负责与Shiro
的其他组件进行交互 ;Realm
SecurityManager
下面务实的小弟,整个Shiro
需要获取权限、身份等安全数据的时候,都需要从Realm
这里获取,它可以看着是一个 数据源 ;
从内部看 Shiro 架构
Subject
任何与应用进行交互的存在
SecurityManager
Shiro
的话事人,中央枢纽,负责进行认证、授权、会话、缓存等功能 ;Authenticator
负责对
Subject
进行认证,内部可以自定义认证策略(Authentication Strategy
) ;Authorizer
授权器,对
Subject
进行权限的判定 ,判断是否拥有某个权限;Realm
安全数据的来源,可以拥有多个
Realm
,可以从内存中获取,也可以从数据库获取,由使用者进行提供,因此一般在应用需要实现自己的Realm
;SessionManager
管理
Session
的生命周期;CacheManager
缓存控制器,管理缓存的安全数据,比如用户的角色、权限等信息
Cryptography
密码模块,Shiro 提供了常见的加密组件;
(一)Shiro,久闻其名,而今初相识的更多相关文章
- 初相识|performance_schema全方位介绍
初相识|performance_schema全方位介绍 |导 语 很久之前,当我还在尝试着系统地学习performance_schema的时候,通过在网上各种搜索资料进行学习,但很遗憾,学习的效果并不 ...
- 我和python的初相识
认识Python是大二的选修 单纯只是想赚学分而已 后来觉得越来越有趣. 一.python简介 简单来说Python 是一个高层次的结合了解释性.编译性.互动性和面向对象的脚本语言.Python 的设 ...
- audacity 做音频分析之--初相识
软件介绍: Audacity是一个跨平台的声音编辑软件,用于录音和编辑音频,是自由.开放源代码的软件.可在Mac OS X.Microsoft Windows.GNU/Linux和其它操作系统上运作. ...
- 神经网络架构PYTORCH-初相识(3W)
who? Python是基于Torch的一种使用Python作为开发语言的开源机器学习库.主要是应用领域是在自然语言的处理和图像的识别上.它主要的开发者是Facebook人工智能研究院(FAIR)团队 ...
- Java 初相识
Java是如何出现的呢?这就要回到1991年,那时候随着单片机的发展,出现了很多微型的系统,Sun公司在这个时候就成立的一个项目组,成员就有我们熟知的“Java之父” 詹姆斯·高斯林,起初的目标是为了 ...
- 3.Spring Cloud初相识--------Ribbon客户端负载均衡
前言: 在生产环境中,未避免单点故障,每个微服务都会做高可用部署. 通白的说,就是每一个一模一样的服务会根据需求提供多分在多台机器上. 那么在大并发的情况下,如何分配服务可以快速得到响应,就成为了我们 ...
- NetworkX初相识
听说NetworkX是一个很牛的复杂网络研究的工具,就来试一下吧. import networkx as nx G= nx.Graph()#建立一个空白的图 G.add_node("node ...
- 6.Spring Cloud初相识-------Zool路由
前言: 在生产环境中,我们不可能将每个服务的真实信息暴漏出去,因为这样太不安全. 我们会选择使用路由代理真实的服务信息,由它负责转发给真实的服务. 新建一个Zool: 1.添加依赖 <?xml ...
- 5.Spring Cloud初相识-------Hystrix熔断器
前言: 1.介绍Hystrix 在一个分布式系统里,许多依赖不可避免的会调用失败,比如超时.异常等,如何能够保证在一个依赖出问题的情况下,不会导致整体服务失败,这个就是Hystrix需要做的事情.Hy ...
随机推荐
- ZR#989
ZR#989 先吐槽一下这个ZZ出题人,卡哈希表. 我就不写那个能过的类高精了,直接写哈希的题解 解法: 判断两个数相加结果是否等于第三个数, 可以直接用 hash判断. #include<io ...
- 常用spaceclaim脚本(二)
#创建一个草图 #第一个参数传入一个Frame对象 #通过一个点和两个向量创建Frame #Frame的类成员函数Create被重载 #重载函数1:Frame.Create(Point, Direct ...
- DELPHI控件升级
DELPHI控件升级 1)DELPHI里面卸载旧版控件: 2)WINDOWS里面卸载旧版控件: 3)删除旧版控件所在安装文件夹: 4)删除旧版的DCU,DCP,BPL文件: 5)安装新版控件: 6)程 ...
- Seurat V3.0
最新版V3文档:https://satijalab.org/seurat/vignettes.html 不要再用V2的版本了,V3已经涵盖了V2所有的功能. 最新版3.0已经发布了,有重大更新,以前的 ...
- 动物细胞结构模型 | animal cell structure
现在大家已经对细胞结构单位习以为常,但在细胞发现之前,这是不可思议的,千奇百怪的生命世界居然有一个统一的基本单位. 这里简单回忆一下经典的细胞结构: 参考YouTube视频: Biology: Cel ...
- Mac OS docker挂载文件夹
sudo docker run -p 3306:3306 --name mysql -v /var/run/docker.sock:/var/run/docker.sock -v ~/mysql/co ...
- 利用 Memory Dump Diagnostic for Java (MDD4J) 分析内存管理问题
利用 Memory Dump Diagnostic for Java (MDD4J) 分析内存管理问题(2) 启动和理解 MDD4J[size=1.0625]为了充分理解如何使用 MDD4J,您需要了 ...
- leetcode 384. Shuffle an Array
384. Shuffle an Array c++ random函数:https://www.jb51.net/article/124108.htm rand()不需要参数,它会返回一个从0到最大随机 ...
- shell编程系列9--文本处理三剑客之sed概述及常见用法总结
shell编程系列9--文本处理三剑客之sed概述及常见用法总结 sed的工作模式:对文本的行数据一行行处理,如下图 sed(stream editor),是流编辑器,依据特定的匹配模式,对文本逐行匹 ...
- linux删除用户报错:userdel: user prize is currently used by process 28021
之前创建了一个普通用户prize,现在想删掉它: [root@VM_0_14_centos /]# userdel prize userdel: user prize 发现原来我克隆了一个会话,另一个 ...