[英]Apache Shiro 1.4.0 initialization
我安装了 Apache Shiro 1.4.0 并按照此官方教程进行设置。
当我尝试使用教程中的此代码使用SecurityManager
初始化SecurityUtils
时:
Factory<SecurityManager> factory = new IniSecurityManagerFactory("classpath:shiro.ini");
SecurityManager securityManager = factory.getInstance();
SecurityUtils.setSecurityManager(securityManager);
我收到一条消息,称IniSecurityManagerFactory
现在已被弃用,取而代之的是 Shiro 的Environment
。
我找不到任何说明如何使用Environment
初始化 Shiro 的教程,其文档也没有多大帮助:
Environment 实例封装了 Shiro 运行所需的所有对象。 它本质上是一个“元”对象,可以从中获取应用程序的所有 Shiro 组件。
Environment 实例通常是作为解析 Shiro 配置文件的结果创建的。 环境实例可以存储在应用程序认为必要的任何位置,并且可以从中检索任何 Shiro 的组件,这些组件在实现安全行为时可能是必要的。
例如,可通过 Environment 实例访问的最明显的组件是应用程序的 securityManager。
那么,我该如何使用这种新的初始化机制呢?
从 Shiro 1.5 开始,现在BasicIniEnvironment
。 它的Javadoc建议像这样创建SecurityManager
:
Environment env = new BasicIniEnvironment("classpath:shiro.ini");
SecurityManager securityManager = env.getSecurityManager();
然后您可以继续:
SecurityUtils.setSecurityManager(securityManager);
话虽如此,我认为在标准 Web 应用程序中使用 Shiro 时,我认为不应该自己这样做,而是在web.xml
文件中配置EnvironmentLoaderListener
:
<listener>
<listener-class>org.apache.shiro.web.env.EnvironmentLoaderListener</listener-class>
</listener>
按照Javadoc中,这将使用EnvrionmentLoader并加载从配置shiro.ini
通过查看以下位置:
因此可以简单地将shiro.ini
放在类路径上,添加 Shiro 将自行选择配置。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.