问题描述:
在使用Spring Security时,实现前后端分离出现跨域问题,在Controller添加了跨域注解@CrossOrigin,但是登录成功后没有权限访问想要的接口,在没有前后端分离的情况下是可以正常访问,后来查阅资料发现默认情况下,标准的跨域请求是不会发送cookie等用户认证凭据的。所以服务器就默认你是没有登录的,不具备访问权限的。
解决办法:
1、前段请求 设置:
在axios请求是设置参数:
axios({
method:'get',
url:`${this.content_path}/authority/getauth`,
withCredentials:true//*设置这个参数,让跨域请求携带cookie,因为cookie中包含了登录的信息
})
2、后端同样要做设置。
//表示允许跨域请求
@Bean
public WebMvcConfigurer WebMvcConfigurer(){
return new WebMvcConfigurer() {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**")
.allowedHeaders("*")
.allowCredentials(true);//表示允许请求携带cookie
}
};
}