那怎么改才可以让这个拦截器放行get和post请求
时间: 2024-04-12 07:29:50 浏览: 122
要让这个拦截器放行GET和POST请求,你可以在preHandle方法中添加对请求方法的判断逻辑,并根据请求方法返回相应的处理结果。
以下是修改后的代码示例:
```java
public class UserAccessInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
String token = request.getHeader(Authentication.TOKEN_NAME);
if (StringUtils.isEmpty(token)) {
// mute for OPTIONS
if (request.getMethod().equalsIgnoreCase(HttpMethod.OPTIONS.name())) {
return true;
}
// need log
return false;
}
UserContext userContext = Authentication.verify(token);
if (userContext == null) {
log.error("");
return false;
}
UserContextHolder.set(userContext);
// 放行GET和POST请求
if (request.getMethod().equalsIgnoreCase(HttpMethod.GET.name()) || request.getMethod().equalsIgnoreCase(HttpMethod.POST.name())) {
return true;
}
// 其他请求需要继续拦截
return false;
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
HandlerInterceptor.super.postHandle(request, response, handler, modelAndView);
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
HandlerInterceptor.super.afterCompletion(request, response, handler, ex);
}
}
```
在修改后的代码中,我增加了判断逻辑:如果请求方法是GET或POST,则直接返回true,表示放行该请求;对于其他请求方法,仍然按照原有逻辑进行判断和处理。这样就可以实现只拦截除GET和POST之外的请求。
阅读全文