package com.gear.customer.swx.filter; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.alibaba.fastjson2.JSONObject; import com.auth0.jwt.interfaces.Claim; import com.gear.common.utils.jwt.JWTTokenUtils; import com.gear.common.vo.Result; import org.apache.logging.log4j.util.Strings; import org.springframework.stereotype.Component; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; import java.io.OutputStream; import java.util.Map; @Component public class CustomInterceptor implements HandlerInterceptor { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { String token = request.getHeader("Authorization"); if (Strings.isEmpty(token)){ response.setCharacterEncoding("UTF-8"); response.setContentType("text/plain;charset=UTF-8"); response.setStatus(HttpServletResponse.SC_OK); Result result = new Result<>(HttpServletResponse.SC_UNAUTHORIZED,"用户未登录"); JSONObject jsonObject = JSONObject.from(result); response.getWriter().write(jsonObject.toJSONString()); // 设置响应体内容 return false; // 返回 false 停止处理链 } try{ String userid = JWTTokenUtils.verifyToken(token); request.setAttribute("userId",userid); String virtually = request.getHeader("virtually"); if (!Strings.isEmpty(virtually)){ request.setAttribute("virtually",virtually); } }catch (Exception e){ response.setCharacterEncoding("UTF-8"); response.setContentType("text/plain;charset=UTF-8"); response.setStatus(HttpServletResponse.SC_OK); Result result = new Result<>(HttpServletResponse.SC_UNAUTHORIZED,"登录状态已失效"); JSONObject jsonObject = JSONObject.from(result); response.getWriter().write(jsonObject.toJSONString()); // 设置响应体内容 return false; // 返回 false 停止处理链 } return true; } @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { // 请求处理之后但视图渲染之前执行 // 可以对数据进行处理、添加公共参数等操作 } @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { // 请求处理完成后执行(包括视图渲染完成) // 可以进行一些资源清理操作 } }