ShiroRealm|学习笔记

简介: 快速学习 ShiroRealm

开发者学堂课程【Java 面试疑难点串讲 3:开发工具及框架ShiroRealm】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/26/detail/558


ShiroRealm

ShiroRealm 机制

Realm 是几乎所有的认证授权框架都具备的一个概念,那么所谓的 Realm 本身有两层含义:

进行用户的认证处理:主要是进行用户名或密码的判断,同时还可以判断出该用户是否被锁定;

用户的授权处理:进行角色或权限认证,而且这里面的认证所需要的就是根据用户名查询角色或权限的标记。于是在 Realm 里面就有一个容易混淆的概念了:Shiro中的 Session 与 HttpSession 的关系是什么?

如果说你现在使用的不是 WEB 程序,而是一个 Java 程序,那么 Shiro 中的认证与授权依然有效。

所以就可以得出一个结论: Shiro 有一套自己维护的 “Session” 机制(不等同于HttpSession)

如果要是在 WEB 中应用,实际上就表示该 ShiroSession 要结合 HttpSession 一起使用,也就是说在 ShiroSession 中保存的内容在 WEB 容器里面实质上是保存在了HttpSession 里面。

理解为 HttpSession 中存在有一个指定的 Shiro 属性。但是 Shiro 在设计的时候又考虑到了用户的使用习惯,所以对于一些用户的身份信息,那么会将这些身份的信息保存在 Session 里面,用户也可以直接利用 session 属性获得相关的身份信息。

不过对于授权处理需要有一些特殊的处理方式

授权的操作在实际检测之中有两类:

实时授权检测:

你现在修改了一个用户的角色或权限之后该配置立即生效,而且立即影响到已登录的用户;但是这样的操作需要频繁进行数据库的查询处理,所以一般不建议使用;

非实时授权检测:

因为用户的角色和权限几乎很少会被改动,所以这样频繁的进行数据库的查询性能会变差,正是因为如此,在实际的开发之中,会考虑在用户第一次使用角色和权限的时候会将数据信息查询出来,如果是单节点会将授权信息保存在内存里面(EHCache),如果是分布式集群,会将这些信息保存在 Redis 里面

总之就一个原则:不要在每一次进行用户授权检测的时候重复查询数据库即可。  

总结:

ShiroRealm 有一套自己的 Session,在  WEB 中该 Session 会在 HttpSession 里面保存数据,但是用户看不见这些。

有的授权处理一定要使用到缓存,否则会影响你的程序性能。

相关文章
|
5月前
QuantLib学习笔记——InterestRate的应用
QuantLib学习笔记——InterestRate的应用
39 0
|
机器学习/深度学习 人工智能 调度
学习笔记6
人工智能课程
68 0
|
开发者 索引
matchAllQuery | 学习笔记
快速学习 matchAllQuery
matchAllQuery | 学习笔记
|
算法 计算机视觉
OpenCV学习笔记--SIFT,SUFT
图像处理两大特征提取算法
139 0
|
NoSQL MongoDB 开发者
故障测试_1|学习笔记
快速学习故障测试_1
故障测试_1|学习笔记
|
XML SQL 机器学习/深度学习
M-PEG7 | 学习笔记
快速学习 M-PEG7,介绍了 M-PEG7系统机制, 以及在实际应用过程中如何使用。
M-PEG7 | 学习笔记
|
分布式计算 前端开发 Java
RegexpQuery|学习笔记
快速学习 RegexpQuery。
245 0
RegexpQuery|学习笔记
|
Java 开发者 Python
Self 的介绍 | 学习笔记
快速学习 Self 的介绍
Self 的介绍 | 学习笔记
|
存储 Java 开发者
BinaryTree|学习笔记
快速学习BinaryTree
110 0
BinaryTree|学习笔记
|
人工智能 算法 开发者
SDV 要解决的问题 | 学习笔记
快速学习 SDV 要解决的问题
下一篇
无影云桌面