Apache Shiro V1.2 Factory与SecurityManager及其子类的关系
一、Apache Shiro简介
Apache Shiro是一个强大易用的Java安全框架,提供了认证、授权、加密和会话管理等功能:
- 认证(AuthentiCation) - 用户身份识别和验证;
- 授权(AuthoriZation) - 访问控制;
- 密码加密 - 保护或隐藏数据防止被偷窥;
- 会话管理 - 每用户相关的时间敏感的状态。
对于任何的应用,Apache Shiro 都可以提供全面的安全管理服务。
二、Factory 简介
Factory是一个接口类,提供(Factory Method design pattern)工厂方法设计模式的支持。
Factory接口声明的getInstance()方法,由其直接子类AbstractFactory实现。
之后AbstractFactory在实现的getInstance()方法中调用了一个新声明的抽象方法,这个方法也是由其直接子类实现的。
这样,从Factory开始,每个子类都实现父类声明的抽象方法,同时又声明一个新的抽象方法并在实现父类的方法中调用。
请参考最后的关系图。
三、SecurityManager简介
SecurityManager是Apache Shiro框架的核心,在一个应用中只有一个单例的SecurityManager实例存在,是典型的Facade模式。
Apache Shiro通过SecurityManager来管理内部组件实例,并通过它来提供安全管理的各种服务。
SecurityManager为全部的用户完成所有安全相关操作的执行。
四、Factory 与 SecurityManager 及其子类的关系
Factory与SecurityManager的关系请见下图:
五、用法
通常这样使用Factory 和 SecurityManager:
Factory<SecurityManager> factory = new IniSecurityManagerFactory();
SecurityManager securityManager = factory.getInstance();
或者指定一个配置文件:
Factory<SecurityManager> factory = new IniSecurityManagerFactory("classpath:shiro.ini");
SecurityManager securityManager = factory.getInstance();
IniSecurityManagerFactory 是 Factory的子类,DefaultSecurityManager是 SecurityManager的子类。