繁体   English   中英

Apache Shiro 1.4.0 初始化

[英]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通过查看以下位置:

  1. /WEB-INF/shiro.ini
  2. 类路径:shiro.ini

因此可以简单地将shiro.ini放在类路径上,添加 Shiro 将自行选择配置。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM