| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- package com.persagy.fm.common.handler;
- import com.alibaba.fastjson.JSONObject;
- import com.persagy.fm.common.constant.AppContextConstants;
- import com.persagy.fm.common.context.AppContext;
- import com.persagy.fm.common.context.DefaultAppContext;
- import com.persagy.fm.common.utils.SecureAES;
- import org.apache.commons.lang3.StringUtils;
- import org.springframework.web.servlet.ModelAndView;
- import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
- /**
- * @description:
- * @author: lixing
- * @company: Persagy Technology Co.,Ltd
- * @since: 2021/3/8 9:35 上午
- * @version: V1.0
- */
- public class AppContextHandler extends HandlerInterceptorAdapter {
- /** 忽略的url - swagger的文档不校验 */
- private static final String[] IGNORE_URL = {".html", ".js", ".css", "/swagger-resources"};
- @Override
- public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
- String requestURI = request.getRequestURI();
- if (StringUtils.containsAny(requestURI, IGNORE_URL)) {
- return true;
- }
- ensureContextInfo(request.getHeader("token"));
- return true;
- }
- /**
- * 根据token获取上下文信息
- * @param token
- */
- private void ensureContextInfo(String token){
- // 从token中解析数据
- SecureAES aes = new SecureAES("63499E35378AE1B0733E3FED7F780B68", "C0E7BD39B52A15C7");
- JSONObject tokenObj = aes.decrypt(token);
- // 获取值
- String accountId = tokenObj.getString(AppContextConstants.ACCOUNT_ID);
- String groupCode = tokenObj.getString(AppContextConstants.GROUP_CODE);
- String appId = tokenObj.getString(AppContextConstants.APP_ID);
- AppContext.getContext().setAccountId(accountId);
- AppContext.getContext().setGroupCode(groupCode);
- AppContext.getContext().setAppId(appId);
- }
- @Override
- public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
- DefaultAppContext.getFactory().unloadContext();
- }
- @Override
- public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
- DefaultAppContext.getFactory().unloadContext();
- }
- }
|