Vas*_*liy 7 java apache security shiro
我安装了Apache Shiro 1.4.0,并按照这个官方教程进行设置.
当我尝试使用教程中的代码进行初始化SecurityUtils
时SecurityManager
:
Factory<SecurityManager> factory = new IniSecurityManagerFactory("classpath:shiro.ini");
SecurityManager securityManager = factory.getInstance();
SecurityUtils.setSecurityManager(securityManager);
Run Code Online (Sandbox Code Playgroud)
我收到的消息IniSecurityManagerFactory
现在已被弃用,有利于Shiro的Environment
.
我找不到任何教程来演示如何初始化Shiro使用Environment
,其文档没有多大帮助:
Environment实例封装了Shiro运行所需的所有对象.它本质上是一个"元"对象,从中可以为应用程序获取所有Shiro组件.
通常在解析Shiro配置文件时创建Environment实例.环境实例可以存储在应用程序认为必要的任何位置,并且可以从中检索实现安全行为可能需要的任何Shiro组件.
例如,通过Environment实例可访问的最明显的组件是应用程序的securityManager.
那么,我该如何使用这种新的初始化机制呢?
从 Shiro 1.5 开始,现在有了BasicIniEnvironment
. 它的Javadoc建议创建SecurityManager
如下:
Environment env = new BasicIniEnvironment("classpath:shiro.ini");
SecurityManager securityManager = env.getSecurityManager();
Run Code Online (Sandbox Code Playgroud)
然后您可以继续:
SecurityUtils.setSecurityManager(securityManager);
Run Code Online (Sandbox Code Playgroud)
话虽这么说,我认为在标准 Web 应用程序中使用 Shiro 时,我认为不应该自己这样做,而是在文件EnvironmentLoaderListener
中配置web.xml
:
<listener>
<listener-class>org.apache.shiro.web.env.EnvironmentLoaderListener</listener-class>
</listener>
Run Code Online (Sandbox Code Playgroud)
根据Javadoc,这将使用EnvrionmentLoadershiro.ini
并通过查看以下位置来加载配置:
因此,我们可以简单地将其放在shiro.ini
类路径上,添加 Shiro 会自行选择配置。
归档时间: |
|
查看次数: |
828 次 |
最近记录: |