| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 |
- package com.chuanghai.ihotel.interceptor;
- import com.chuanghai.ihotel.common.exception.BizCodeEnume;
- import com.chuanghai.ihotel.common.utils.CommonResult;
- import com.chuanghai.ihotel.util.CommonUtil;
- import com.chuanghai.ihotel.util.JWTUtil;
- import com.chuanghai.ihotel.vo.LoginUserVO;
- import com.fasterxml.jackson.databind.ObjectMapper;
- import io.jsonwebtoken.Claims;
- import lombok.extern.slf4j.Slf4j;
- import org.springframework.http.HttpMethod;
- import org.springframework.http.HttpStatus;
- import org.springframework.util.StringUtils;
- import org.springframework.web.servlet.HandlerInterceptor;
- import org.springframework.web.servlet.ModelAndView;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
- import java.io.IOException;
- import java.io.OutputStream;
- /**
- * 登录拦截
- **/
- @Slf4j
- public class LoginInterceptor implements HandlerInterceptor {
- public static ThreadLocal<LoginUserVO> threadLocal = new ThreadLocal<>();
- @Override
- public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
- if (HttpMethod.OPTIONS.toString().equalsIgnoreCase(request.getMethod())) {
- response.setStatus(HttpStatus.NO_CONTENT.value());
- return true;
- }
- // 获取token信息
- String token = request.getHeader("user_token");
- // 验证userToken
- if (!StringUtils.hasText(token)) {
- returnErrorResponse(response, BizCodeEnume.TOKEN_IS_EMPTY);
- return false;
- }
- // 解析token
- Claims claims = JWTUtil.checkJWT(token);
- if (claims == null) { // 未登录
- returnErrorResponse(response, BizCodeEnume.TOKEN_INVALID);
- return false;
- }
- String cardNumber = (String) claims.get("card_number");
- String identityType = (String) claims.get("identity_type");
- LoginUserVO loginUserVO = LoginUserVO.builder().cardNumber(cardNumber).identityType(identityType).build();
- threadLocal.set(loginUserVO);
- 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 {
- threadLocal.remove();
- }
- // 返回错误信息
- public void returnErrorResponse(HttpServletResponse response, BizCodeEnume bizCodeEnume) {
- try (OutputStream out = response.getOutputStream()) {
- CommonResult fail = CommonResult.fail(Integer.toString(bizCodeEnume.getCode()), bizCodeEnume.getMsg());
- ObjectMapper objectMapper = new ObjectMapper();
- response.setCharacterEncoding("utf-8");
- response.setContentType("text/json");
- out.write(objectMapper.writeValueAsString(fail).getBytes("utf-8"));
- out.flush();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- }
|