@EnableOAuth2Sso 引发的一个血的教训

背景:
最近项目整体升级, 引入spring cloud security 和 spring security oauth2 等框架
在网上各种查找资料,了解到项目还可以做sso 于是,参考网上资料简单搭了几个项目

  • 在项目启动类 加上注解 @EnableOAuth2Sso

这一步就是错误的开始。。。
当你打开项目时, 会遇到各种 spring securiy 的问题, csrf、x-frame-options
当你只引入 spring security 时 这个问题很好解决

http.headers().frameOptions().disable().and().csrf().disable(); 

这样就可以解决, 但是由于集成了 @EnableOAuth2Sso , 有一个默认的security 配置类
OAuth2SsoDefaultConfiguration 所以当你用 WebSecurityConfig 继承 WebSecurityConfigurerAdapter
去写 security 的配置类时 , 项目起不起来, 报错原因 @Order 只能有一个 ,这时, 想到的最简单的办法就是 改变 @Order ,但是项目起来之后 发现 配置不生效。。。(目前还不知道什么原因)

其实最后的解决办法很简单,就是把 @EnableOAuth2Sso 放到自己写的配置类上

@EnableOAuth2Sso
@Configuration
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.headers().frameOptions().disable().and().csrf().disable();
        super.configure(http);
    }
}

你可能感兴趣的:(@EnableOAuth2Sso 引发的一个血的教训)