AppContextHandler.java 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. package com.persagy.fm.common.handler;
  2. import com.alibaba.fastjson.JSONObject;
  3. import com.persagy.fm.common.constant.AppContextConstants;
  4. import com.persagy.fm.common.context.AppContext;
  5. import com.persagy.fm.common.context.DefaultAppContext;
  6. import com.persagy.fm.common.utils.SecureAES;
  7. import org.apache.commons.lang3.StringUtils;
  8. import org.springframework.web.servlet.ModelAndView;
  9. import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
  10. import javax.servlet.http.HttpServletRequest;
  11. import javax.servlet.http.HttpServletResponse;
  12. /**
  13. * @description:
  14. * @author: lixing
  15. * @company: Persagy Technology Co.,Ltd
  16. * @since: 2021/3/8 9:35 上午
  17. * @version: V1.0
  18. */
  19. public class AppContextHandler extends HandlerInterceptorAdapter {
  20. /** 忽略的url - swagger的文档不校验 */
  21. private static final String[] IGNORE_URL = {".html", ".js", ".css", "/swagger-resources"};
  22. @Override
  23. public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
  24. String requestURI = request.getRequestURI();
  25. if (StringUtils.containsAny(requestURI, IGNORE_URL)) {
  26. return true;
  27. }
  28. ensureContextInfo(request.getHeader("token"));
  29. return true;
  30. }
  31. /**
  32. * 根据token获取上下文信息
  33. * @param token
  34. */
  35. private void ensureContextInfo(String token){
  36. // 从token中解析数据
  37. SecureAES aes = new SecureAES("63499E35378AE1B0733E3FED7F780B68", "C0E7BD39B52A15C7");
  38. JSONObject tokenObj = aes.decrypt(token);
  39. // 获取值
  40. String accountId = tokenObj.getString(AppContextConstants.ACCOUNT_ID);
  41. String groupCode = tokenObj.getString(AppContextConstants.GROUP_CODE);
  42. String appId = tokenObj.getString(AppContextConstants.APP_ID);
  43. AppContext.getContext().setAccountId(accountId);
  44. AppContext.getContext().setGroupCode(groupCode);
  45. AppContext.getContext().setAppId(appId);
  46. }
  47. @Override
  48. public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
  49. DefaultAppContext.getFactory().unloadContext();
  50. }
  51. @Override
  52. public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
  53. DefaultAppContext.getFactory().unloadContext();
  54. }
  55. }