在用SpringSecurity有个问题头疼的半天,也可能是对SpringSecurity的不熟悉导致,在此贴一下怎么去解决的。
项目架构是微服务架构,那自然是前后端分离撒,在前端进行Ajax请求时出现了跨域问题
感觉不是大问题喃,就算我不会解决,网上解决跨域的问题不是一堆么。
我就注入了一个配置类,如下:
@Configuration
public class CorsConfig {
private CorsConfiguration buildConfig() {
CorsConfiguration corsConfiguration = new CorsConfiguration();
corsConfiguration.addAllowedOrigin("*"); // 1允许任何域名使用
corsConfiguration.addAllowedHeader("*"); // 2允许任何头
corsConfiguration.addAllowedMethod("*"); // 3允许任何方法(post、get等)
corsConfiguration.setAllowCredentials(true);
return corsConfiguration;
}
@Bean
public CorsFilter corsFilter() {
UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
source.registerCorsConfiguration("/**", buildConfig()); // 4
return new CorsFilter(source);
}
}
时间过去一小时了,又过去一小时了,我用Swagger是一点问题都没有,可还是请求不了,我觉得是我的思路错了,于是我矛头转向SpringSecurity
我把拦截请求关了,可以访问了,打开又不可以访问了,真是头皮发麻。
下面这句就是在SpringSecurity配置文件里面拦截请求的了
//拦截其他所有请求
.anyRequest().authenticated()
所以事实证明,SpringSecurity有问题。
于是我查询资料知道
加一句代码就ok了
.and()
.cors()
//拦截其他所有请求
.anyRequest().authenticated()
.and()
.cors()
.and().csrf().disable();