Apache Shiro 1.4.0初始化

问题描述 投票:9回答:1

我安装了Apache Shiro 1.4.0,并按照this official tutorial进行了设置。

[当我尝试使用本教程中的代码使用SecurityUtils初始化SecurityManager时:

Factory<SecurityManager> factory = new IniSecurityManagerFactory("classpath:shiro.ini");
SecurityManager securityManager = factory.getInstance();
SecurityUtils.setSecurityManager(securityManager);

我收到一条消息,现在不赞成使用IniSecurityManagerFactory,而赞成Shiro的Environment

我找不到任何显示如何使用Environment初始化Shiro的教程,并且它的文档没有太大帮助:

环境实例封装了Shiro的所有对象需要起作用。它本质上是一个“元”对象,所有可以为应用程序获取Shiro组件。

环境实例通常是通过解析Shiro配置文件。该环境实例可以存储在应用程序认为有必要的任何地方,都可以从中检索在实施中可能需要的Shiro的任何组件安全行为。

例如,通过环境可访问的最明显的组件实例是应用程序的securityManager。

所以,如何使用这种新的初始化机制?

java apache security shiro
1个回答
0
投票

从Shiro 1.5开始,现在有BasicIniEnvironment。它的Javadoc建议像这样创建SecurityManager

Environment env = new BasicIniEnvironment("classpath:shiro.ini");
SecurityManager securityManager = env.getSecurityManager();

您可以继续:

SecurityUtils.setSecurityManager(securityManager);

话虽这么说,我认为在标准Web应用程序中使用Shiro时,我认为不应该一个人做,而应该在EnvironmentLoaderListener文件中配置web.xml

<listener>
    <listener-class>org.apache.shiro.web.env.EnvironmentLoaderListener</listener-class>
</listener>

根据Javadoc,它将使用EnvrionmentLoader并通过查看以下位置从shiro.ini加载配置:

  1. / WEB-INF / shiro.ini
  2. classpath:shiro.ini

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

© www.soinside.com 2019 - 2024. All rights reserved.