spring boot HandlerInterceptor 校验token
时间: 2023-12-23 21:04:43 浏览: 30
以下是使用Spring Boot HandlerInterceptor校验Token的步骤:
1.创建一个TokenInterceptor类,实现HandlerInterceptor接口,并在preHandle方法中进行Token校验。
```java
public class TokenInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
// 从请求头中获取Token
String token = request.getHeader("Token");
if (token == null || token.isEmpty()) {
// 如果Token为空,返回401 Unauthorized
response.setStatus(HttpServletResponse.SC_UNAUTHORIZED);
return false;
} else {
// 校验Token是否有效,这里只是简单判断Token是否为123456
if (!token.equals("123456")) {
// 如果Token无效,返回403 Forbidden
response.setStatus(HttpServletResponse.SC_FORBIDDEN);
return false;
}
}
return true;
}
}
```
2.在Spring Boot的配置类中注册TokenInterceptor。
```java
@Configuration
public class WebMvcConfig implements WebMvcConfigurer {
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new TokenInterceptor()).addPathPatterns("/**");
}
}
```
3.在Controller中使用@RequestBody注解获取请求体中的JSON数据,并使用@Valid注解和自定义的校验注解对参数进行校验。
```java
@RestController
public class MyController {
@PostMapping("/test")
public String test(@RequestBody @Valid MyRequest request) {
// 处理请求
return "success";
}
}
```
4.定义一个MyRequest类,用于接收请求体中的JSON数据,并在其中定义需要校验的参数和校验注解。
```java
public class MyRequest {
@NotNull(message = "参数name不能为空")
private String name;
@Min(value = 1, message = "参数age必须大于等于1")
private int age;
// 省略getter和setter方法
}
```