Apache Shiro 1.4.0初始化

时间:2017-07-23 13:29:21

标签: java apache security shiro

我安装了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,其文档并没有多大帮助:

  

一个Environment实例封装了Shiro的所有对象   需要运作。它本质上是一个元&#39;所有的对象   可以为应用程序获取Shiro组件。

     

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

     

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

那么,我该如何使用这种新的初始化机制呢?

1 个答案:

答案 0 :(得分:3)

从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:< / p>

<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即可自行配置。