http://www.infoq.com/cn/articles/apache-shiro
subject :登录系统的主体
import org.apache.shiro.subject.Subject;
import org.apache.shiro.SecurityUtils;
…
Subject currentUser = SecurityUtils.getSubject();
securityManager:
Subject的“幕后”推手是SecurityManager。Subject代表了当前用户的安全操作,SecurityManager则管理所有用户的安全操作。它是Shiro框架的核心,充当“保护伞”,引用了多个内部嵌套安全组件,它们形成了对象图。但是,一旦SecurityManager及其内部对象图配置好,它就会退居幕后,应用开发人员几乎把他们的所有时间都花在Subject API调用上。
Realm:
Realm充当了Shiro与应用安全数据间的“桥梁”或者“连接器”。也就是说,当切实与像用户帐户这类安全相关数据进行交互,执行认证(登录)和授权(访问控制)时,Shiro会从应用配置的Realm中查找很多内容。
- 收集用户的身份信息,称为当事人(principal),以及身份的支持证明,称为证书(Credential)。
- 将当事人和证书提交给系统。
- 如果提交的证书与系统期望的该用户身份(当事人)匹配,该用户就被认为是经过认证的,反之则被认为未经认证的。