搭建好了spring-cloud整套服务后,开始优化时发现,需要在访问服务发现中心时添加登录功能,以保障安全,于是参考了spring-cloud官网的配置方法,配置后果然需要通过登录才可以访问注册中心,但是此时所有的微服务都无法注册到注册中心上,尝试各种方式去配置就是不行,最后发现问题出在了版本上,网上搜到的以及spring官网提供的文档并没有提及到security在新版本中添加了csrf过滤,csrf将微服务的注册也给过滤了,所以在微服务启动时控制台明明看到response=200,但又报403的错误.

此时只需要在eureka发现中心手动关闭csrf即可正常完成服务注册,且不影响登录注册中心.

这个坑藏得太深,弄了一个下午才找到原因.

@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.csrf().disable();//关闭csrf
        super.configure(http);
    }
}

最后说一下,我用的spring-boot版本是:

2.0.4.RELEASE

spring-cloud版本是:

Finchley.SR1

使用最新版本果然要谨慎啊,坑有点多,到现在为止踩过2个了,但新版在性能方面确实要好一些.

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐