Apache Shiro系列一,概述 —— 初识
Shiro的设计目标就是让应用程序的安全管理更简单、更直观。 软件系统一般是基于用户故事来做设计。也就是我们会基于一个客户如何与这个软件系统交互来设计用户界面和服务接口。比如,你可能会说:“如果用户登录了我们的系统,我就给他们显示一个按钮,点击之后可以查看他自己的账户信息。如果没有登录,我就给他显示一个注册按钮。” 上述应用程序在很大程度上是为了满足用户的需求而编写的,即便这个“用户”不是人,而是一个其他的软件系统。你仍然是按照谁当前正在与你的系统交互的逻辑来编写你的逻辑代码。 Shiro的设计已经考虑到以上这些用户安全的概念。 总览 在最顶层,Shiro的架构有3个主要概念:Subject、SecurityManager和Realms。下图展示了这几个组件之间的交互,下面我们会逐一介绍这些概念: #,Subject,正如我们在 教程 中所说,Subject其实代表的就是当前正在执行操作的用户,只不过因为“User”一般指代人,但是一个“Subject”可以是人,也可以是任何的第三方系统,服务账号等任何其他正在和当前系统交互的第三方软件系统。 所有的Subject实例都被绑定到一个SecurityManager,如果你和一个Subject交互,所有的交互动作都会被转换成Subject与SecurityManager的交互。 #,SecurityManager