public class UserAccessInterceptor implements HandlerInterceptor { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { // String token = TokenHelper.getFromReq(request); String token = request.getHeader(Authentication.TOKEN_NAME); if (StringUtils.isEmpty(token)) { // mute for OPTIONS 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); return true; } @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); } }解释一下这个类中方法用处
时间: 2024-02-14 20:27:44 浏览: 89
这个类是一个拦截器(Interceptor),用于在用户访问请求被处理前进行一些预处理操作。它实现了HandlerInterceptor接口,并重写了其中的三个方法。
1. preHandle方法:
这个方法在请求被处理之前被调用。它接收HttpServletRequest、HttpServletResponse和Object类型的参数。preHandle方法返回一个boolean值,表示是否继续执行后续的处理流程。
在这个方法中,首先从请求头中获取token,然后判断token是否为空。如果为空,还会进一步判断请求方法是否为OPTIONS,如果是则返回true,表示允许跨域请求的预检请求通过;否则,返回false,表示需要进行记录日志等操作。
如果token不为空,会调用Authentication.verify(token)方法进行验证。如果验证通过,将用户信息存入UserContextHolder中,并返回true;否则,记录错误日志,并返回false。
2. postHandle方法:
这个方法在请求被处理之后、视图渲染之前调用。它接收HttpServletRequest、HttpServletResponse、Object和ModelAndView类型的参数。postHandle方法没有返回值。
在这个方法中,可以对响应进行一些处理操作,比如设置响应头、添加响应结果等。
3. afterCompletion方法:
这个方法在整个请求处理完成后调用,包括视图渲染完毕。它接收HttpServletRequest、HttpServletResponse、Object和Exception类型的参数。afterCompletion方法没有返回值。
在这个方法中,可以进行一些清理操作,比如释放资源、记录请求处理时间等。
总结:UserAccessInterceptor类中的preHandle方法用于在请求被处理前进行预处理,postHandle和afterCompletion方法用于在请求处理完成后进行后续操作。这个类可以用于实现用户访问权限验证、日志记录等功能。
阅读全文