自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(14)
  • 收藏
  • 关注

原创 《Apache Shiro 源码解析》- 13.最终总结:Shiro 的架构

到此为止,我们已经对 Shiro 框架的方方面面都有了非常深入的理解,在本章中,我们离开具体的代码细节,站在框架设计者的位置,从更宏观的视角来观察 Shiro 的全貌。在 Shiro 官方文档中,有一篇文章详细描述了其 HLD 和 LLD。本章内容的结构参考了 Shiro 官方的设计说明,做了一些调整和补充,重新绘制了框图。Shiro 作为一个有 20 多年历史的框架,原有文档中的一些技术已经不存在,修改后的图表和描述更符合当代的技术发展趋势,便于开发者更好地理解和使用 Shiro。

2024-11-07 11:58:18 1044

原创 《Apache Shiro 源码解析》- 12.整合实战:基于 Shiro 框架的 RBAC 权限控制系统

在前面的章节中,我们已经详细分析了 Shiro 的架构和源码。在本章中,我们将会用 Shiro 框架来实现一个完整的 RBAC 权限控制系统。这个系统的整体功能是:让用户可以自定义服务端 API 的权限和前端页面组件的权限。

2024-11-07 11:56:20 755

原创 《Apache Shiro 源码解析》- 11.Shiro 对 Spring 的支持

如前所述,Realm是 Shiro 的核心组件之一,用于从数据源中获取用户的认证和授权信息,以下是自定义@Autowired@Override=null?try {logger.error(username + "登录失败{}", e.getMessage());@Override在 ShiroConfig.java 中配置@Bean。

2024-11-07 11:52:44 925

原创 《Apache Shiro 源码解析》- 10.加密与解密

加密和解密本身是一个庞大且专业领域,底层依赖于各种复杂的数学算法。在这个领域,很多算法涉及到国安问题,例如,美国国家安全局(NSA)参与制定了 AES(Advanced Encryption Standard) 和 SHA(Secure Hash Algorithm) 加密算法的标准。很明显,这些内容远远超出了本书的篇幅。因此,本书不对这些算法本身进行详细的解析,而是重点探讨 Shiro 是如何封装这些算法,并且整合到框架中的。

2024-11-07 11:50:44 1071

原创 《Apache Shiro 源码解析》- 9.事件总线

EventBusEventBus 是一种通用的设计思想,并非 Shiro 独有,在各种语言、各种框架(前端、服务端、移动端),甚至网络硬件架构中都会出现它的身影。从设计模式的角度看, EventBus 最经典的“观察者模式”。

2024-11-07 11:48:50 1019

原创 《Apache Shiro 源码解析》- 8.缓存

缓存的惰性创建:只有在第一次访问某个缓存时,才会创建该缓存。线程安全的缓存管理:通过使用 ConcurrentHashMap 确保缓存管理器在并发环境中的安全性。缓存销毁机制:提供 destroy() 方法,用于清理资源并销毁所有缓存。AbstractCacheManager 的源代码非常简单,去掉注释之后只有几十行。

2024-11-07 11:43:08 1158

原创 《Apache Shiro 源码解析》- 7.会话

Shiro 自己设计了一个独立的顶级 Session 接口,如下图所示:这样设计带来更好的灵活性: Shiro 可以在任意业务环境中使用,而不仅仅是 web 环境。为了方便使用,Shiro 内置了两个具体的实现类:HttpServletSession 和 SimpleSession。需要注意,在发布时, Shiro 把 SimpleSession 和 HttpServletSession 放到了不同的 jar 包中。SimpleSession 在中,而 HttpServletSession 在。

2024-11-07 11:38:18 923

原创 《Apache Shiro 源码解析》- 6.角色

因为,当开发者给用户“授予”权限的时候,只要把权限字符串添加到权限集合中就可以了,如果要取消某个权限,开发者可以直接从集合中删除某个权限代码。在基于角色的访问控制方面,我们区分了隐式角色与显式角色的概念。需要补充说明的是,由于角色具有哪些权限是可以配置的,基于角色的检查容易导致问题,所以,实际的业务系统尽量不要基于角色进行权限检测,而是直接检查权限表达式。本章深入探讨了 Shiro 中角色(Role)的设计和实现,包括主体、角色与权限之间的关系,角色的具体实现,权限表达式的运算,以及基于角色的访问控制。

2024-11-07 11:31:44 900

原创 《Apache Shiro 源码解析》- 5.权限

在安全领域,权限指的是主体(通常是用户)对资源进行访问或操作的权利。例如,用户可能被授权访问某个网页、编辑文档,或执行系统命令等操作。这些场景可以抽象为三个关键要素:主体、操作、资源。显然,三要素缺一不可:如果没有主体,权限毫无意义;如果没有资源,就没有必要定义权限;如果不存在操作,则说明主体与资源之间不会发生关系,那么定义权限也是多此一举。也就是说,只有主体、资源、主体对资源存在某种操作,这 3 个要素同时存在的时候,我们才有必要定义权限。

2024-11-07 11:26:40 980

原创 《Apache Shiro 源码解析》- 4.领域

显然,我们需要一个术语来准确描述这些数据源。在 Shiro 中,使用了Realm这一术语。Realm的音标为 /rɛlm/,字面意思是“领地”、“领域”。在本书中,我们将其翻译为“领域”。这一词语不仅寓意深刻,而且避免了与任何现有类名的冲突。RealmRealm。

2024-11-07 11:21:06 743

原创 《Apache Shiro 源码解析》- 3.身份验证与授权

与是 Shiro 框架最核心的功能,本章分析这两个核心功能的设计和源码实现。

2024-11-07 11:11:48 1127

原创 《Apache Shiro 源码解析》- 2.主体、身份与凭据

与所有专业领域一样,在安全领域有一些专用的术语,这些术语一直存在,不是 Shiro 发明的, Shiro 只是提供了自己的实现方式。

2024-11-07 11:03:42 1158

原创 《Apache Shiro 源码解析》- 1.Shiro 的发展历程

2004 年是一个万马奔腾的年代。千禧年的互联网泡沫刚刚消散,新的技术浪潮正在酝酿。那一年,淘宝成立才一年,Google 刚刚度过五岁生日,而 Java 语言则迎来了它的十周年。那一年,整个 Java 生态飞速发展,各种工具和框架如雨后春笋般涌现,安全领域也不例外。当时,Java 开发者们主要使用的是 JAAS 和 EJB 作为安全框架。这是两个非常古老的框架,现代 Java 开发者可能很少听过它们的名字。不过,在当年,安全方面的框架不多,开发者们并没有太多的选择。

2024-11-07 10:55:03 845

原创 《Apache Shiro 源码解析》- 0.前言

这一章将总结 Shiro 的 HLD(High-Level Design,概要设计) 和 LLD(Low-Level Design,详细设计),让读者站在更高的视角上来观察 Shiro 框架,体验它的设计之美。

2024-11-07 10:54:05 994

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除