我正在开发一个Spring Boot应用程序,它使用OAuth2实现单点登录。
现在,我在安全配置上使用@ConditionalOnProperty
注释在需要时禁用OAuth2:
@Configuration
@ConditionalOnProperty("some.property")
@Order(SecurityProperties.BASIC_AUTH_ORDER-3)
@EnableOAuth2Sso
public class SecurityConfigurationOAuth2 extends WebSecurityConfigurerAdapter {
我还有第二个安全配置,在禁用OAuth时使用:
@Configuration
@Order(SecurityProperties.BASIC_AUTH_ORDER-2)
public class SecurityConfiguration extends WebSecurityConfigurerAdapter {
到目前为止,这是有效的,但我不喜欢有两个几乎相同的配置。唯一需要由属性禁用/启用的是@EnableOAuth2Sso
注释。
有没有其他方法可以做到这一点?
发布于 2018-11-16 23:52:05
如果真的只需要启用/禁用@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 {
}
....
}
https://stackoverflow.com/questions/53319003
复制相似问题