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<String> 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<String> 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 {
|
// 请求处理完成后执行(包括视图渲染完成)
|
// 可以进行一些资源清理操作
|
}
|
}
|