shiro1.3_结构

2020-03-15  本文已影响0人  o______o
1

Apache Shiro的设计目标是通过直观和易用来简化应用安全的使用.大多数人在和应用交互时思考应用安全的流程是一致的,Shiro的核心设计思想就是那个流程的具体化.

软件应用通常被设计为基于用户的操作环境.也就是说,你通常会根据用户如何与软件交互来设计用户界面和服务API.比如,你或许会说"如果和我的应用交互的用户已登录,我就展示一个点击后可以显示账户信息的按钮,如果没有登录就显示一个登录按钮".

这个案例表明编写应用程序主要是为了满足用户的需求和目标,即使用户是另一个软件系统或其它可交互的软件,你仍然可以根据当前交互的行为来编写代码.

Shiro在自己的设计中反映了这些概念,通过匹配对软件开发人员来说已经很直观的东西,ApacheShiro保持了直观性,并且在几乎任何应用程序中都很容易使用.

最高级预览

2
在最高级别的概念层级上,Shiro的架构主要有3个概念:Subject,SecurityManagerRealms.下面的图是一个关于组件如何交互的统筹概览,我们将在接下来逐一介绍每个组件:
3
4 5

详细结构

6

下图展示了Shiro的核心结构概念,并对每个概念进行了简要的总结.


7
8

The SecurityManager

由于Shiro的API鼓励以Subject为中心的编程方法,因此大多数应用程序开发人员很少(如果有的话)直接与SecurityManager交互(但是框架开发人员有时可能会发现它很有用).即便如此,了解SecurityManager如何工作仍然很重要,特别是在为应用程序配置SecurityManager的时候.

12

设计

综上所述,应用程序的SecurityManager管理着应用程序中所有用户的安全执行操作和对应的安全状态.在Shiro的默认SecurityManager实现中,这包括:

一个安全管理器组件管理着上述所有的功能,同时在一个实现类里面还要让这些东西灵活可定制是非常困难的一件事.

为了简化配置或者说灵活配置/可插入,Shiro的实现在设计上都是高度模块化的.事实上,模块化程度很高,以至于SecurityManager的实现(及其类层次结构)根本做不了什么事情.作为替代,SecurityManager实现主要充当轻量级的容器组件,将几乎所有行为委托给nested/wrapped的组件.这种"装饰器"设计模式反映在上面的详细架构图中.

当组件实际执行给定的代码逻辑时,SecurityManager知道如何实现和如何协调组件以表现出正确的行为.

SecurityManager的实现类和组件类也与JavaBeans兼容,它允许你(或配置机制)通过标准的JavaBeans访问/设置方法(get/set)轻松地定制可插入组件.这意味着Shiro的模块化体系结构可以非常容易的转换为自由配置.

上一篇下一篇

猜你喜欢

热点阅读