gpt4 book ai didi

java - 使用 Spring 的 Java Configuration 时如何使用 Shiro.ini 配置 Shiro?

转载 作者:行者123 更新时间:2023-11-30 09:14:11 26 4
gpt4 key购买 nike

我将 Apache Shiro 与 Spring 一起使用,并且仅使用 Spring 的 Java 配置。 (没有 XML)。下面是我的配置类的一部分:

@Configuration
public class AppConfig {

@Bean
public LifecycleBeanPostProcessor lifecycleBeanPostProcessor() {
return new LifecycleBeanPostProcessor();
}

@Bean
public ShiroFilterFactoryBean shiroFilter(DefaultWebSecurityManager securityManager) {
ShiroFilterFactoryBean factoryBean = new ShiroFilterFactoryBean();
factoryBean.setSecurityManager(securityManager);

String shiroIniContents = readFile(new ClassPathResource("shiro.ini").getFile().toPath());
factoryBean.setFilterChainDefinitions(shiroIniContents);//only reads the [urls] section

factoryBean.setLoginUrl("/rest/login");

return factoryBean;
}


@Bean
public DefaultWebSecurityManager securityManager() {
DefaultWebSecurityManager securityManager = new DefaultWebSecurityManager();
securityManager.setRealm(stormpathRealm());
return securityManager;
}
}

如您所见,我试图通过将 shiro.ini 传递给 ShiroFilterFactoryBean.setFilterChainDefinitions() 来加载它。

但该方法仅加载 [urls] 部分的内容。所以 [main] 部分中的任何内容都保持不变。

那么,如何/在哪里使用 shiro.ini 的全部内容配置 shiro?

最佳答案

你可以试试documentation说并从 ini 文件中创建一个 SecurityManager

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

在你的@Bean方法中

ShiroFilterFactoryBean factoryBean = new ShiroFilterFactoryBean();
factoryBean.setSecurityManager(securityManager); // referring to previous

如果需要进一步配置,您需要将 securityManager 转换为 DefaultSecurityManager

在使用 Spring 时,你真的不应该使用 shiro.ini。您可以使用更强大的工具。

关于java - 使用 Spring 的 Java Configuration 时如何使用 Shiro.ini 配置 Shiro?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20626520/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com