我正在使用OAuth2实现SSO的Spring Boot应用程序中。
现在,我在安全配置上使用@ConditionalOnProperty
批注在需要时禁用OAuth2:
@Configuration
@ConditionalOnProperty("some.property")
@Order(SecurityProperties.BASIC_AUTH_ORDER-3)
@EnableOAuth2Sso
public class SecurityConfigurationOAuth2 extends WebSecurityConfigurerAdapter {
我还有第二种安全配置,在禁用OAuth时会使用beeing:
@Configuration
@Order(SecurityProperties.BASIC_AUTH_ORDER-2)
public class SecurityConfiguration extends WebSecurityConfigurerAdapter {
到目前为止,这是可行的,但我不喜欢具有两个几乎相同的配置。唯一需要由属性禁用/启用的是@EnableOAuth2Sso
批注。
还有另一种方法可以实现这一目标吗?
答案 0 :(得分:0)
如果真的仅需要启用/禁用@ EnableOAuth2Sso注释,是否有任何理由不能仅创建另一个仅包含该注释以及@ConditionalOnProperty或@Profile的配置?
尽管未经测试,但您可能可以拥有一个嵌套配置类,该类严格用于以下条件注释:
@Configuration
@Order(SecurityProperties.BASIC_AUTH_ORDER-3)
public class SecurityConfigurationOAuth2 extends WebSecurityConfigurerAdapter {
@Configuration
@ConditionalOnProperty("some.property") // Or use a profile
@EnableOAuth2Sso
static class EnableSSOConfig {
}
....
}