From d1b06c45c84e175b1174b7b9a1d6d0923f3fb510 Mon Sep 17 00:00:00 2001 From: thinkgem Date: Tue, 2 Jan 2024 10:23:37 +0800 Subject: [PATCH] add ConditionalOnMissingBean --- .../jeesite/modules/config/ShiroConfig.java | 48 +++++++++---------- 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/modules/core/src/main/java/com/jeesite/modules/config/ShiroConfig.java b/modules/core/src/main/java/com/jeesite/modules/config/ShiroConfig.java index 8b7df4d2..5bc2e4d3 100644 --- a/modules/core/src/main/java/com/jeesite/modules/config/ShiroConfig.java +++ b/modules/core/src/main/java/com/jeesite/modules/config/ShiroConfig.java @@ -4,11 +4,18 @@ */ package com.jeesite.modules.config; -import java.util.Collection; -import java.util.Map; - -import javax.servlet.Filter; - +import com.jeesite.common.collect.ListUtils; +import com.jeesite.common.config.Global; +import com.jeesite.common.shiro.cas.CasOutHandler; +import com.jeesite.common.shiro.config.FilterChainDefinitionMap; +import com.jeesite.common.shiro.filter.*; +import com.jeesite.common.shiro.realm.AuthorizingRealm; +import com.jeesite.common.shiro.realm.CasAuthorizingRealm; +import com.jeesite.common.shiro.realm.LdapAuthorizingRealm; +import com.jeesite.common.shiro.session.SessionDAO; +import com.jeesite.common.shiro.session.SessionManager; +import com.jeesite.common.shiro.web.ShiroFilterFactoryBean; +import com.jeesite.common.shiro.web.WebSecurityManager; import org.apache.shiro.cache.CacheManager; import org.apache.shiro.cas.CasSubjectFactory; import org.apache.shiro.realm.Realm; @@ -26,25 +33,9 @@ import org.springframework.context.annotation.DependsOn; import org.springframework.core.Ordered; import org.springframework.core.annotation.Order; -import com.jeesite.common.collect.ListUtils; -import com.jeesite.common.config.Global; -import com.jeesite.common.shiro.cas.CasOutHandler; -import com.jeesite.common.shiro.config.FilterChainDefinitionMap; -import com.jeesite.common.shiro.filter.CasFilter; -import com.jeesite.common.shiro.filter.FormFilter; -import com.jeesite.common.shiro.filter.InnerFilter; -import com.jeesite.common.shiro.filter.LdapFilter; -import com.jeesite.common.shiro.filter.LogoutFilter; -import com.jeesite.common.shiro.filter.PermissionsFilter; -import com.jeesite.common.shiro.filter.RolesFilter; -import com.jeesite.common.shiro.filter.UserFilter; -import com.jeesite.common.shiro.realm.AuthorizingRealm; -import com.jeesite.common.shiro.realm.CasAuthorizingRealm; -import com.jeesite.common.shiro.realm.LdapAuthorizingRealm; -import com.jeesite.common.shiro.session.SessionDAO; -import com.jeesite.common.shiro.session.SessionManager; -import com.jeesite.common.shiro.web.ShiroFilterFactoryBean; -import com.jeesite.common.shiro.web.WebSecurityManager; +import javax.servlet.Filter; +import java.util.Collection; +import java.util.Map; /** * Shiro配置 @@ -147,6 +138,7 @@ public class ShiroConfig { * Shiro认证过滤器 */ @Bean + @ConditionalOnMissingBean(name="shiroFilter") public ShiroFilterFactoryBean shiroFilter(WebSecurityManager webSecurityManager, AuthorizingRealm authorizingRealm, CasAuthorizingRealm casAuthorizingRealm, LdapAuthorizingRealm ldapAuthorizingRealm) { ShiroFilterFactoryBean bean = new ShiroFilterFactoryBean(); @@ -174,6 +166,7 @@ public class ShiroConfig { * 系统安全认证实现类 */ @Bean + @ConditionalOnMissingBean(name="authorizingRealm") public AuthorizingRealm authorizingRealm(SessionDAO sessionDAO) { AuthorizingRealm bean = new AuthorizingRealm(); bean.setSessionDAO(sessionDAO); @@ -184,6 +177,7 @@ public class ShiroConfig { * 单点登录信息句柄,单点退出用 */ @Bean + @ConditionalOnMissingBean(name="casOutHandler") public CasOutHandler casOutHandler() { return new CasOutHandler(); } @@ -192,6 +186,7 @@ public class ShiroConfig { * CAS安全认证实现类 */ @Bean + @ConditionalOnMissingBean(name="casAuthorizingRealm") public CasAuthorizingRealm casAuthorizingRealm(SessionDAO sessionDAO, CasOutHandler casOutHandler) { CasAuthorizingRealm bean = new CasAuthorizingRealm(); bean.setSessionDAO(sessionDAO); @@ -205,6 +200,7 @@ public class ShiroConfig { * LDAP安全认证实现类 */ @Bean + @ConditionalOnMissingBean(name="ldapAuthorizingRealm") public LdapAuthorizingRealm ldapAuthorizingRealm(SessionDAO sessionDAO, CasOutHandler casOutHandler) { LdapAuthorizingRealm bean = new LdapAuthorizingRealm(); JndiLdapContextFactory contextFactory = (JndiLdapContextFactory) bean.getContextFactory(); @@ -218,6 +214,7 @@ public class ShiroConfig { * 定义Shiro安全管理配置 */ @Bean + @ConditionalOnMissingBean(name="webSecurityManager") public WebSecurityManager webSecurityManager(AuthorizingRealm authorizingRealm, CasAuthorizingRealm casAuthorizingRealm, LdapAuthorizingRealm ldapAuthorizingRealm, SessionManager sessionManager, CacheManager shiroCacheManager) { WebSecurityManager bean = new WebSecurityManager(); @@ -237,6 +234,7 @@ public class ShiroConfig { * Shiro 生命周期处理器,实现初始化和销毁回调 */ @Bean(name="lifecycleBeanPostProcessor") + @ConditionalOnMissingBean(name="lifecycleBeanPostProcessor") public LifecycleBeanPostProcessor lifecycleBeanPostProcessor() { return new LifecycleBeanPostProcessor(); } @@ -246,6 +244,7 @@ public class ShiroConfig { */ @Bean @DependsOn({ "lifecycleBeanPostProcessor" }) + @ConditionalOnMissingBean(name="defaultAdvisorAutoProxyCreator") public DefaultAdvisorAutoProxyCreator defaultAdvisorAutoProxyCreator() { DefaultAdvisorAutoProxyCreator bean = new DefaultAdvisorAutoProxyCreator(); bean.setProxyTargetClass(true); @@ -256,6 +255,7 @@ public class ShiroConfig { * 启用Shrio授权注解拦截方式,AOP式方法级权限检查 */ @Bean + @ConditionalOnMissingBean(name="authorizationAttributeSourceAdvisor") public AuthorizationAttributeSourceAdvisor authorizationAttributeSourceAdvisor(WebSecurityManager webSecurityManager) { AuthorizationAttributeSourceAdvisor bean = new AuthorizationAttributeSourceAdvisor(); bean.setSecurityManager(webSecurityManager);