【问题标题】:Integrate Multiple Shiro Realms into a Spring Boot environment Java将多个 Shiro Realms 集成到 Spring Boot 环境中 Java
【发布时间】:2017-10-26 23:40:44
【问题描述】:

我有一个基于 xml 的 Apache Shiro SecurityManager 和几个自定义领域(它们扩展了领域中的构建)。我正在尝试迁移到 Spring Boot,它主要是基于注释的。

我想轻松地将所有领域配置到安全管理器中。目前,我可以通过创建 ShiroConfig.java(由 @Configuration 注释),在 ShiroConfig 中手动创建每个领域的对象并将其添加到下DefaultWebSecurityManager.setRealms(Collection)。

有没有其他方法,通过注解可以实现同样的事情,我对每个 Realm 进行注解,说它是一个领域,并且它们都将在运行时添加到安全管理器下?

  • 当前xml配置

    <bean id="securityManager" class="com.abc.xyz.SecurityManager"> <property name="realms"> <set> <ref component-id="Realm_1”/> <ref component-id="Realm_2” /> <ref component-id="Realm_3” /> <ref component-id="Realm_4” /> </set> </property> </bean> <bean id="Realm_1" class="com.abc.xyz.Realm_1”> </bean> <bean id="Realm_2" class="com.abc.xyz.Realm_2”> </bean> <bean id="Realm_3” class="com.abc.xyz.Realm_3”> </bean> <bean id="Realm_4” class="com.abc.xyz.Realm_4”> </bean>

    • 当前的 Spring 引导代码 [我不想为每个领域重复]

@Bean(name="securityManager")

public DefaultWebSecurityManager securityManager() {
    DefaultWebSecurityManager manager = new DefaultWebSecurityManager();
    manager.setRealm(userRealm());
    manager.setSessionManager(defaultWebSessionManager());
    return manager;
}

@豆 @DependsOn(value="lifecycleBeanPostProcessor")

public Realm_1 userRealm() {
    Realm_1 userRealm = new Realm_1();
    return userRealm;
}

【问题讨论】:

    标签: java spring spring-boot shiro


    【解决方案1】:

    【讨论】:

    • 感谢您的回复,但是我的问题更多的是,如果我有 4 个领域,可以通过一些注释将它们注入到安全管理器中,而不是我手动创建领域列表并传递到安全管理器,在您的第一个 ShiroConfiguratin.java 文件中作为以下代码 sn-p `@Bean @ Override protected SessionsSecurityManager securityManager(List realms) { return super.securityManager(realms); }`
    • 您应该能够像公开任何其他 Spring bean 一样公开您的 bean。
    猜你喜欢
    • 2016-12-20
    • 2015-10-03
    • 2014-07-12
    • 2021-04-09
    • 2019-02-07
    • 2012-04-07
    • 1970-01-01
    • 2021-06-01
    • 2018-03-22
    相关资源
    最近更新 更多