Procházet zdrojové kódy

fix: 修复无法获取用户信息

huangzqa před 4 roky
rodič
revize
5c8536326b

+ 14 - 1
src/main/java/com/dragonsoft/dcuc/approvegateway/filter/ForwardForFilter.java → src/main/java/com/dragonsoft/dcuc/approvegateway/filter/UserInfoForwardForFilter.java

@@ -1,9 +1,14 @@
 package com.dragonsoft.dcuc.approvegateway.filter;
 
+import com.alibaba.fastjson.JSONObject;
+import com.dragonsoft.duceap.base.entity.security.BaseSecurityUser;
+import com.dragonsoft.duceap.base.utils.UserContextUtils;
 import com.dragonsoft.duceap.commons.util.ip.IpUtils;
+import com.dragonsoft.duceap.security.jwt.JwtTokenUtils;
 import com.netflix.zuul.ZuulFilter;
 import com.netflix.zuul.context.RequestContext;
 import com.netflix.zuul.exception.ZuulException;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.cloud.netflix.zuul.filters.support.FilterConstants;
 import org.springframework.stereotype.Component;
 
@@ -18,8 +23,9 @@ import java.util.Map;
  * @author huangzqa
  * @date 2021/6/29
  */
+@Slf4j
 @Component
-public class ForwardForFilter extends ZuulFilter {
+public class UserInfoForwardForFilter extends ZuulFilter {
     @Override
     public String filterType() {
         return FilterConstants.PRE_TYPE;
@@ -42,6 +48,13 @@ public class ForwardForFilter extends ZuulFilter {
         String realIpAdrress = IpUtils.getRealIpAdrress(request);
         Map<String, String> zuulRequestHeaders = currentContext.getZuulRequestHeaders();
         zuulRequestHeaders.put("HTTP_X_FORWARDED_FOR", realIpAdrress);
+        BaseSecurityUser currentUser = UserContextUtils.getCurrentUser();
+        log.info("====登录用户信息:{}====", JSONObject.toJSONString(currentUser));
+        if (currentUser != null) {
+            String jwtToken = JwtTokenUtils.getAlgorithmGen(JwtTokenUtils.AlgorithmType.HS256).sign(currentUser);
+            currentContext.addZuulRequestHeader(JwtTokenUtils.AUTHORIZATION_HEADER, JwtTokenUtils.TOKEN_PREFIX + jwtToken);
+            log.info("登录jwtToken:{}", jwtToken);
+        }
         return null;
     }
 }