package com.highdatas.mdm.util; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.highdatas.mdm.entity.TUser; import com.highdatas.mdm.pojo.CodeMsg; import com.highdatas.mdm.pojo.Result; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; 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 javax.servlet.http.HttpSession; import java.io.IOException; import java.io.PrintWriter; /** * @author kimi * @description * @date 2019-12-13 13:29 */ @Slf4j @Service(value = "requestInterceptor") public class CommonInterceptor implements HandlerInterceptor{ @Autowired UserRoleClient userRoleClient; @Autowired RedisClient redisClient; @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws IOException { String url = request.getRequestURI(); log.info(url); String userId = request.getHeader("userId"); if ("/".equalsIgnoreCase(url)) { return true; } if (StringUtils.isEmpty(userId)) { log.error("无登陆信息"); return false; } HttpSession session = request.getSession(); try { Object userObj = redisClient.getRedisValObj(userId); if (userObj != null) { JSONObject userJsonObject = (JSONObject) userObj; TUser user = JSONObject.parseObject(userJsonObject.toJSONString(), TUser.class); session.setAttribute("user", user); return true; } } catch (Exception e) { e.printStackTrace(); } TUser user = userRoleClient.getTUserById(userId); if (user == null) { log.error("user not found by : " + userId); response.setStatus(HttpServletResponse.SC_UNAUTHORIZED); response.setCharacterEncoding("UTF-8"); response.setContentType("application/json; charset=utf-8"); Result error = Result.error(CodeMsg.USER_NOT_MATHED); PrintWriter out = response.getWriter(); out.write(JSON.toJSONString(error)); out.flush(); out.close(); return false; } session.setAttribute("user", user); return true; } @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) { //请求处理后 } }