第一次配置和使用SpringSecurity,总是要碰很多次墙!
先说说个人理解的它里面比较有意义的架构。
里面有好多设计模式的影子:策略模式,代理模式,工厂模式,链条模式=====,看到这些模式(除了工厂或单例)心里总是会有些兴奋,总算是看到了模式的真正练兵场!跟兄弟们好好分享一下!(才看了一天!有不对之处,还望各位斧正!)
策略模式(Strategy Pattern):
主要说一下session相关的这个策略模式,以SessionAuthenticationStrategy接口的策略划分,根据我们的session安全策略,指定不同的策略,现在看是这种布局:
顶层接口 |
SessionAuthenticationStrategy |
|
|
具体实现 |
SessionFixationProtectionStrategy
(直接默认实现) |
NullAuthenticatedSessionStrategy
(空实现)
|
|
二级实现 |
ConcurrentSessionControlStrategy |
|
|
画图比较麻烦,各位还是凑合着看吧!说明一下:顶层接口被下面“具体实现”两个类实现,而“二级实现”实现SessionFixationProtectionStrategy。具体采用哪种策略要看我们的配置了!
代理模式(Proxy):
很明显的代理类,DelegatingFilterProxy和FilterChainProxy,这两个类看着心里都痒痒的,呵呵,平常总是看代理模式呀什么的,即时看着例子也不踏实,现在看到这两个东西,心里突然有种平静的激动!
这两个代理类以FilterChainProxy为例说明一下吧,FilterChainProxy代理了权限验证Filters的工作,通过它来访问整个过滤器串里面的过滤器。
Chain模式:这个也应该以FilterChainProxy这个类入口来分析,呵呵,有兴趣的各位就通过这个来看看吧!