spring boot 写一个拦截器 获取toen 然后调用方法
时间: 2024-09-15 17:04:22 浏览: 44
Spring Boot 中的拦截器(Interceptor)主要用于在请求处理过程中添加额外的功能,如日志记录、权限验证等。如果你想创建一个拦截器获取到 `token`,然后调用某个特定的方法,你可以按照以下步骤操作:
1. 首先,你需要创建一个实现了 `HandlerInterceptorAdapter` 或者更具体的 `WebMvcConfigurerAdapter` 接口的类。这个接口包含了 `preHandle()` 方法,这是在每次HTTP请求开始之前会被调用的地方。
```java
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@Configuration
public class MyGlobalInterceptorConfig implements WebMvcConfigurer {
@Override
public void addInterceptors(InterceptorRegistry registry) {
// 创建一个自定义拦截器
MyCustomInterceptor customInterceptor = new MyCustomInterceptor();
registry.addInterceptor(customInterceptor).addPathPatterns("/**"); // 全局拦截所有路径
}
}
// 定义拦截器类
public class MyCustomInterceptor extends HandlerInterceptorAdapter {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
String token = extractTokenFromRequest(request); // 从请求头或请求参数中获取token
if (validateToken(token)) { // 根据token做验证
// 调用你想在token验证通过后执行的方法
doSomethingAfterTokenValidation(token);
return true; // 让请求继续处理
} else {
// 如果验证失败,可以返回错误响应或跳过后续处理
return false;
}
}
private String extractTokenFromRequest(HttpServletRequest request) {
// 从请求头如Authorization字段获取token,或者从请求参数中获取
return request.getHeader("Authorization");
}
private boolean validateToken(String token) {
// 这里实现你的验证逻辑,比如检查token是否有效,是否过期等
// 假设这里是简单的示例
return !token.isEmpty() && checkTokenValidity(token);
}
private void doSomethingAfterTokenValidation(String token) {
// 这里放置你要在验证通过后调用的具体业务方法
// 例如,调用一个服务方法,传入token作为参数
yourService.doSomethingWithToken(token);
}
}
```
阅读全文