123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 |
- package com.persagy.dmp.common.handler;
- import cn.hutool.core.util.StrUtil;
- import cn.hutool.json.JSONObject;
- import com.persagy.dmp.common.context.AppContext;
- import com.persagy.dmp.common.helper.SpringHelper;
- import com.persagy.dmp.common.constant.CommonConstant;
- import org.springframework.web.servlet.ModelAndView;
- import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
- /**
- * 上下文 拦截器
- * @author Charlie Yu
- * @date 2021-06-25
- */
- public class AppContextHandler extends HandlerInterceptorAdapter {
- @Override
- public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
- // 运维平台token认证
- if(StrUtil.isNotBlank(request.getHeader("token"))) {
- accessTokenInfo(request.getHeader("token"));
- } else if(StrUtil.isNotBlank(request.getParameter("groupCode"))) {
- // 请求参数中包含groupCode,由于没有标识位,暂时用这种方式判断吧
- accessRequestInfo(request);
- } else {
- // 其他情况,按现有系统默认不验证的逻辑,其他情况就是默认放行,不必处理。最好是抛401
- }
- return true;
- }
- /**
- * 根据token获取上下文信息
- * @param token
- */
- private void accessTokenInfo(String token){
- // 是否启用token拦截
- boolean enabled = SpringHelper.getBoolean("persagy.common.token.enabled", true);
- if(!enabled) {
- return;
- }
- // 从token中解析数据
- // SecureAES aes = new SecureAES("63499E35378AE1B0733E3FED7F780B68", "C0E7BD39B52A15C7");
- JSONObject tokenObj = new JSONObject();
- // try {
- // tokenObj = aes.decryptToken(token);
- // } catch (UnsupportedEncodingException e) {
- // throw new AESDecryptException("token解析异常");
- // }
- // 获取值
- String groupCode = tokenObj.getStr("groupCode");
- String appId = tokenObj.getStr("appId");
- String accountId = tokenObj.getStr("accountId");
- AppContext.getContext().setGroupCode(groupCode);
- AppContext.getContext().setAppId(appId);
- AppContext.getContext().setAccountId(accountId);
- }
- /**
- * 从请求参数中获取上下文
- * @param request
- */
- private void accessRequestInfo(HttpServletRequest request) {
- AppContext.getContext().setGroupCode(request.getParameter("groupCode"));
- AppContext.getContext().setProjectId(request.getParameter("projectId"));
- AppContext.getContext().setAppId(request.getParameter("appId"));
- String userId = request.getParameter("userId");
- // 无用户时,默认为默认系统用户
- if(StrUtil.isBlank(userId)) {
- userId = CommonConstant.DEFAULT_ID;
- }
- AppContext.getContext().setAccountId(userId);
- }
- @Override
- public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
- AppContext.unload();
- }
- @Override
- public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
- AppContext.unload();
- }
- }
|