拦截器配置类
package com.qst.medical_system.config;
import com.qst.medical_system.interceptor.JwtAuthenticationInterceptor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@Configuration
public class WebMvcConfig implements WebMvcConfigurer {
@Autowired
private JwtAuthenticationInterceptor jwtAuthenticationInterceptor;
@Override
public void addInterceptors(InterceptorRegistry registry) {
// 注册JWT拦截器,拦截所有请求
registry.addInterceptor(jwtAuthenticationInterceptor)
.addPathPatterns("/**") // 拦截所有请求
.excludePathPatterns(
"/user/login",
"/user/register",
"/doc.html",
"/webjars/**",
"/v3/api-docs/**",
"/swagger-resources/**",
"/favicon.ico"); // 排除登录接口
}
}
配置说明
- 使用 @Configuration 注解将 WebMvcConfig 标记为配置类
- 实现 WebMvcConfigurer 接口来自定义Spring MVC配置
- 通过 addInterceptors 方法注册拦截器
- 使用 addPathPatterns 指定拦截的路径模式
- 使用 excludePathPatterns 指定不需要拦截的路径
拦截器实现类
package com.example.interceptor;
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@Component
public class CustomInterceptor implements HandlerInterceptor {
/**
* 在控制器方法执行之前执行
* @return true表示继续执行,false表示中断执行
*/
@Override
public boolean preHandle(HttpServletRequest request,
HttpServletResponse response,
Object handler) throws Exception {
// 在这里实现前置处理逻辑
System.out.println("执行前处理逻辑");
return true;
}
// 例如如下:
/*
@Override
public boolean preHandle(HttpServletRequest request,
HttpServletResponse response,
Object handler) throws Exception {
// 从请求头中获取token
String token = request.getHeader("Authorization");
// 验证token是否有效
if (token != null && token.startsWith("Bearer ")) {
token = token.substring(7);
if (jwtUtil.validateToken(token)) {
return true; // 验证通过,继续执行
}
}
// 验证失败,返回401未授权
response.setStatus(HttpServletResponse.SC_UNAUTHORIZED);
response.getWriter().write("Unauthorized");
return false;
}
*/
/**
* 在控制器方法执行之后,视图渲染之前执行
*/
@Override
public void postHandle(HttpServletRequest request,
HttpServletResponse response,
Object handler,
ModelAndView modelAndView) throws Exception {
// 在这里实现后置处理逻辑
System.out.println("执行后处理逻辑");
}
/**
* 在整个请求处理完成之后执行
*/
@Override
public void afterCompletion(HttpServletRequest request,
HttpServletResponse response,
Object handler,
Exception ex) throws Exception {
// 在这里实现完成后的清理逻辑
System.out.println("请求完成后的清理逻辑");
}
}
2274

被折叠的 条评论
为什么被折叠?



