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 里面保存数据,但是用户看不见这些。

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

相关文章
|
存储 数据采集 搜索推荐
旅游推荐系统
旅游推荐系统
1121 0
|
存储 编译器 C++
【C++航海王:追寻罗杰的编程之路】C++11(二)
【C++航海王:追寻罗杰的编程之路】C++11(二)
144 0
|
缓存 负载均衡 网络协议
译|A scalable, commodity data center network architecture(三)
译|A scalable, commodity data center network architecture(三)
279 0
我的博客即将入驻“云栖社区”,诚邀技术同仁一同入驻。
我的博客即将入驻“云栖社区”,诚邀技术同仁一同入驻。
941 0
|
测试技术 API 数据库
Android的Testing和Instrumentation
Android提供了一系列强大的测试工具,它针对Android的环境,扩展了业内标准的JUnit测试框架。尽管你可以使用JUnit测试Android工程,但Android工具允许你为应用程序的各个方面进行更为复杂的测试,包括单元层面及框架层面。
1242 0
|
20天前
|
人工智能 数据可视化 安全
王炸组合!阿里云 OpenClaw X 飞书 CLI,开启 Agent 基建狂潮!(附带免费使用6个月服务器)
本文详解如何用阿里云Lighthouse一键部署OpenClaw,结合飞书CLI等工具,让AI真正“动手”——自动群发、生成科研日报、整理知识库。核心理念:未来软件应为AI而生,CLI即AI的“手脚”,实现高效、安全、可控的智能自动化。
34900 56
王炸组合!阿里云 OpenClaw X 飞书 CLI,开启 Agent 基建狂潮!(附带免费使用6个月服务器)
|
15天前
|
人工智能 自然语言处理 安全
Claude Code 全攻略:命令大全 + 实战工作流(建议收藏)
本文介绍了Claude Code终端AI助手的使用指南,主要内容包括:1)常用命令如版本查看、项目启动和更新;2)三种工作模式切换及界面说明;3)核心功能指令速查表,包含初始化、压缩对话、清除历史等操作;4)详细解析了/init、/help、/clear、/compact、/memory等关键命令的使用场景和语法。文章通过丰富的界面截图和场景示例,帮助开发者快速掌握如何通过命令行和交互界面高效使用Claude Code进行项目开发,特别强调了CLAUDE.md文件作为项目知识库的核心作用。
14028 43
Claude Code 全攻略:命令大全 + 实战工作流(建议收藏)
|
3天前
|
缓存 人工智能 自然语言处理
我对比了8个Claude API中转站,踩了不少坑,总结给你
本文是个人开发者耗时1周实测的8大Claude中转平台横向评测,聚焦Claude Code真实体验:以加权均价(¥/M token)、内部汇率、缓存支持、模型真实性及稳定性为核心指标。
|
10天前
|
人工智能 JavaScript Ubuntu
低成本搭建AIP自动化写作系统:Hermes保姆级使用教程,长文和逐步实操贴图
我带着怀疑的态度,深度使用了几天,聚焦微信公众号AIP自动化写作场景,写出来的几篇文章,几乎没有什么修改,至少合乎我本人的意愿,而且排版风格,也越来越完善,同样是起码过得了我自己这一关。 这个其实OpenClaw早可以实现了,但是目前我觉得最大的区别是,Hermes会自主总结提炼,并更新你的写作技能。 相信就冲这一点,就值得一试。 这篇帖子主要就Hermes部署使用,作一个非常详细的介绍,几乎一步一贴图。 关于Hermes,无论你赞成哪种声音,我希望都是你自己动手行动过,发自内心的选择!
2799 28