Apache Shiro 1.4.0初始化

q8l4jmvw  于 2023-10-23  发布在  Apache
关注(0)|答案(1)|浏览(155)

我安装了Apache Shiro 1.4.0,并按照this official tutorial进行设置。
当我尝试使用教程中的以下代码使用SecurityManager初始化SecurityUtils时:

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

我得到一个消息,IniSecurityManagerFactory现在被弃用,而支持Shiro的Environment
我找不到任何演示如何使用Environment初始化Shiro的教程,它的文档也没有多大帮助:
Environment示例封装了Shiro运行所需的所有对象。它本质上是一个“Meta”对象,可以从中获得应用程序的所有Shiro组件。
Environment示例通常是在解析Shiro配置文件后创建的。环境示例可以存储在应用程序认为必要的任何地方,并且可以从中检索在实现安全行为时可能需要的任何Shiro组件。
例如,通过Environment示例可访问的最明显的组件是应用程序的securityManager。
那么,如何使用这个新的初始化机制呢?

ki1q1bka

ki1q1bka1#

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

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

然后,您可以继续:

  1. SecurityUtils.setSecurityManager(securityManager);

话虽如此,我认为在标准Web应用程序中使用Shiro时,我认为不应该自己这样做,而是在web.xml文件中配置EnvironmentLoaderListener

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

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

  1. /WEB-INF/shiro.ini
    1.类路径:shiro.ini
    因此,您可以简单地将shiro.ini放在类路径上,添加Shiro将自行选择配置。
展开查看全部

相关问题