来源日文单词“城”(读音-xi lao)
一、三个基本概念——Subject,SecurityManager,Realms
- Subject,通俗讲代表当前用户,不叫User,因为一般User是用来代表一个人的,Subject更加宽泛,如第三方进程,后台用户等,指的是当前与软件进行交互的东西。在需要时,任何位置都可以调用:
import org.apache.shiro.subject.Subject;
import org.apache.shiro.SecurityUtils;
...
Subject currentUser = SecurityUtils.getSubject();
取得数据后,可以做90%以上的事情,如登录,登出,权限判断等等
-
SecurityManager,如果说Subject是代表一个用户,且可以进行相关操作,SecurityManager就是用来对所有用户进行操作的。其是Shiro的框架核心,用来配置一些基础配置如加密算法/session cache方法等,不过一般只需要配置一次,后续的操作都是与Subject来打交道。整个App中一般只需要一个SecurityManager实例,配置根据环境不同而不同,如Web App中一般是在web.xml中配置一个filter,初始化。
-
Realm,直译:领域。是Shiro与安全信息之间的桥梁。用户登录、权限控制等的信息,如用户密码是否正确?用户是否有查看权限等等。数据源可以是文件、数据库等
二、Session Management——会话管理
灵活,可自定义。跨平台(取决于Session的底层的实现方式)