2021SC@SDUSC
Quickstart.java
import org.apache.shiro.SecurityUtils; import org.apache.shiro.ini.IniSecurityManagerFactory; import org.apache.shiro.lang.util.Factory; import org.apache.shiro.mgt.SecurityManager; public class Quickstart { public static void main(String[] args) { Factory<SecurityManager> factory = new IniSecurityManagerFactory("classpath:shiro.ini"); SecurityManager securityManager = factory.getInstance(); SecurityUtils.setSecurityManager(securityManager); System.exit(0); } }
shiro.ini
[users] # 用户名:root 密码:secret 角色:admin root = secret, admin # 用户名:guest 密码:guest 角色:guest guest = guest, guest [roles] # admin拥有全部权限,用通配符‘*’表示 admin = *
从Shiro抽象工厂模式的UML图中可以看到,IniSecurityManagerFactory类继承了IniFactorySupport类。IniFactorySupport类对基于INI配置生成实例的工厂实现提供基本支持,它继承了AbstractFactory类,而AbstractFactory类是Factory接口的实现。
IniSecurityManagerFactory类是基于INI配置创建SecurityManager实例的工厂。IniSecurityManagerFactory类有三个构造方法,分别为无参、接收一个Ini对象、接收一个表示ini文件路径的字符串。demo代码中使用的是下图中第三个构造方法,即传入一个表示ini文件路径的字符串。
向构造方法中传入表示ini文件路径的字符串后,涉及的调用如下: