再回首,三年过去了,上次本来准备好好整理下,没想到疫情让工作发生了变化,就此暂停。
如今,依然是工作需要,接着整理一下多年前扔一边的知识点吧。
--------------------------------------------
一、整体介绍
Apache Shiro 是 Java 的一个安全框架。而且使用的人也越来越多,设计的API也很简单。用起来还是不错的。
基本功能来说:身份认证、权限认证、会话管理、加密管理。
这是shiro最核心的一些功能,对于一个后台系统来说,基本上也决定了一些逻辑架构的格式,很多小伙伴愿意或者不愿意使用shiro,其实都是这个结构影响的。个人觉得,习惯了这种逻辑表述以后,shiro还是非常不错了。
-----------------------------------------
除此之外,Shiro 不会去维护用户、维护权限;这些需要我们自己去设计 / 提供;然后通过相应的接口注入给 Shiro 即可。
二、shiro初视
从外部来看,shiro构建了一个黑盒子。
(1)包装
对于每一个进入系统大门的客人来说,shiro把他包装成一个Subject,翻译过来是主题的意思。其实,说的简单点,就是一个访问者。
所以,访问者的shiroAPI集合,就是Subject。
也就是说,一个访问者,如果要进入你系统,第一步就是利用shiro包装成Subject。
(2)控制
shiro的安全管理,是通过自己的安全管理器来完成的。
这个东西叫SecurityManager。这是shiro的核心,不过我们也不需要太深入研究源码。一切为了使用,为了理解思路。
(3)数据域
shiro的控制虽然是自己完成,但是如何控制的策略,始终是需要录入一些数据源的。
哪些人可以进入,可以进入做什么,这些都是需要配置进去的,这东西在shiro中就是域。
这部分shiro的思路也很简单,做了一个大方向上的解耦。
把控制本身和要控制的策略数据分开来做,对于控制本身,给我们做成黑盒子的,省去我们的研究,相当于控制引擎隔离出去了,其实也挺好的。
(4)总结
总结下,shiro其实就这么简单,包装–控制—数据域。
说来说去,也不过是走了这么个流程而已。
好了,后面有时间,在写写它的组件。但大体思路就是这的。