3

Spring で Apache Shiro を使用し、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 を構成するにはどうすればよいでしょうか。

4

1 に答える 1

2

ドキュメントの内容を試して、SecurityManagerファイルiniから

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

shiro.iniSpring を使用する場合は、実際に使用しないでください。はるかに強力なツールを自由に使用できます。

于 2013-12-17T05:29:55.657 に答える