我安装了Apache Shiro 1.4.0,并按照this official tutorial进行设置。
当我尝试使用教程中的以下代码使用SecurityManager
初始化SecurityUtils
时:
Factory<SecurityManager> factory = new IniSecurityManagerFactory("classpath:shiro.ini");
SecurityManager securityManager = factory.getInstance();
SecurityUtils.setSecurityManager(securityManager);
我得到一个消息,IniSecurityManagerFactory
现在被弃用,而支持Shiro的Environment
。
我找不到任何演示如何使用Environment
初始化Shiro的教程,它的文档也没有多大帮助:
Environment示例封装了Shiro运行所需的所有对象。它本质上是一个“Meta”对象,可以从中获得应用程序的所有Shiro组件。
Environment示例通常是在解析Shiro配置文件后创建的。环境示例可以存储在应用程序认为必要的任何地方,并且可以从中检索在实现安全行为时可能需要的任何Shiro组件。
例如,通过Environment示例可访问的最明显的组件是应用程序的securityManager。
那么,如何使用这个新的初始化机制呢?
1条答案
按热度按时间ki1q1bka1#
从Shiro 1.5开始,现在有
BasicIniEnvironment
。它的Javadoc建议像这样创建SecurityManager
:然后,您可以继续:
话虽如此,我认为在标准Web应用程序中使用Shiro时,我认为不应该自己这样做,而是在
web.xml
文件中配置EnvironmentLoaderListener
:根据Javadoc,这将使用EnvrionmentLoader并通过查看以下位置从
shiro.ini
加载配置:1.类路径:shiro.ini
因此,您可以简单地将
shiro.ini
放在类路径上,添加Shiro将自行选择配置。