前言
vue-element-admin的修改点这个这是前端部分
本文用一个demo介绍如何获取运用spring-boot配置后台的跨域和拦截器,再配合前端返回获取用户的信息的过程。数据库用JPA进行查询,token用JWT生成。
一、跨域和拦截器的配置
新建文件夹config在问价夹下新建MyWebConfigure.java和LoginInterceptor.java
在LoginInterceptor.java中配置拦截器,再在MyWebConfigure.java中使用。拦截器会拦截excludePathPatterns()以外的所有路径。
1. 跨域的配置
主要代码如下:
@SpringBootConfiguration
public class MyWebConfigurer implements WebMvcConfigurer {
@Override
public void addCorsMappings(CorsRegistry registry) {
//所有请求都允许跨域,使用这种配置方法就不用在 interceptor 中再配置 header 了
registry.addMapping("/**")
.allowCredentials(true)
.allowedOrigins("http://localhost:9528")
.allowedOrigins("*")//允许跨域访问的路径
.allowedMethods("*")
.allowedHeaders("*")
.maxAge(3600);
}
//使用拦截器
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new LoginInterceptor())
//所有路径都被拦截
.addPathPatterns("/**")
//添加不拦截的路径
.excludePathPatterns("/register","/login");
}
}
2.拦截器配置
拦截器中配置跨域信息避免拦截器和跨域冲突造成浏览器报跨域错误
preHandle无法调用封装的数据返回类可以在preHandle中用response给前端返回信息
public class LoginInterceptor implements HandlerInterceptor {
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
boolean flag;
//在拦截器中设置允许跨域 避免拦截器和跨域的配置冲突导致跨域报错
response.setHeader("Access-Control-Allow-Origin", "*");
response.setHeader("Access-Control-Allow-Headers","*");
response.setHeader("Access-Control-Allow-Methods"