From: 刘洪青 Date: Thu, 19 Sep 2019 10:06:26 +0000 (+0800) Subject: fix: 优化SimpleUserTransmit,数据编码改为base64 X-Git-Tag: v0.0.1^2~37 X-Git-Url: https://source.supwisdom.com/gerrit/gitweb?a=commitdiff_plain;h=4fa118394b29071722f46419ad80e6f939619085;p=institute%2Fsw-backend.git fix: 优化SimpleUserTransmit,数据编码改为base64 --- diff --git a/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/apis/remote/base/v1/admin/AdminAccountRemoteFallbackFactory.java b/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/apis/remote/base/v1/admin/AuthnAccountRemoteFallbackFactory.java similarity index 100% rename from bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/apis/remote/base/v1/admin/AdminAccountRemoteFallbackFactory.java rename to bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/apis/remote/base/v1/admin/AuthnAccountRemoteFallbackFactory.java diff --git a/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/apis/remote/base/v1/admin/AdminAccountRemoteFeignClient.java b/bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/apis/remote/base/v1/admin/AuthnAccountRemoteFeignClient.java similarity index 100% rename from bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/apis/remote/base/v1/admin/AdminAccountRemoteFeignClient.java rename to bff/admin/src/main/java/com/supwisdom/institute/backend/admin/bff/apis/remote/base/v1/admin/AuthnAccountRemoteFeignClient.java diff --git a/common/core/pom.xml b/common/core/pom.xml index dcfe763..ad793bd 100644 --- a/common/core/pom.xml +++ b/common/core/pom.xml @@ -54,6 +54,11 @@ true + + commons-codec + commons-codec + + com.alibaba fastjson diff --git a/common/core/src/main/java/com/supwisdom/institute/backend/common/core/transmit/feign/SimpleUserTransmitRequestInterceptor.java b/common/core/src/main/java/com/supwisdom/institute/backend/common/core/transmit/feign/SimpleUserTransmitRequestInterceptor.java index be002db..903219f 100644 --- a/common/core/src/main/java/com/supwisdom/institute/backend/common/core/transmit/feign/SimpleUserTransmitRequestInterceptor.java +++ b/common/core/src/main/java/com/supwisdom/institute/backend/common/core/transmit/feign/SimpleUserTransmitRequestInterceptor.java @@ -1,9 +1,9 @@ package com.supwisdom.institute.backend.common.core.transmit.feign; -import java.net.URLDecoder; - import lombok.extern.slf4j.Slf4j; +import org.apache.commons.codec.binary.Base64; + import com.alibaba.fastjson.JSONObject; import com.supwisdom.institute.backend.common.core.transmit.user.User; import com.supwisdom.institute.backend.common.core.transmit.user.UserContext; @@ -20,10 +20,14 @@ public class SimpleUserTransmitRequestInterceptor implements RequestInterceptor if (user != null) { try { String jsonUser = JSONObject.toJSONString(user); - String headerValue = new String(URLDecoder.decode(jsonUser,"UTF-8")); + + //String headerValue = new String(URLDecoder.decode(jsonUser,"UTF-8")); + String headerValue = Base64.encodeBase64String(jsonUser.getBytes("UTF-8")); + template.header(UserContext.KEY_USER_IN_HTTP_HEADER, headerValue); + log.debug("User set to feign header: ok"); } catch (Exception e) { - log.warn("User set error", e); + log.warn("User set to feign header: error", e); } } } diff --git a/common/core/src/main/java/com/supwisdom/institute/backend/common/core/transmit/filter/SimpleUserTransmitFilter.java b/common/core/src/main/java/com/supwisdom/institute/backend/common/core/transmit/filter/SimpleUserTransmitFilter.java index 7d99859..644e4f6 100644 --- a/common/core/src/main/java/com/supwisdom/institute/backend/common/core/transmit/filter/SimpleUserTransmitFilter.java +++ b/common/core/src/main/java/com/supwisdom/institute/backend/common/core/transmit/filter/SimpleUserTransmitFilter.java @@ -1,7 +1,6 @@ package com.supwisdom.institute.backend.common.core.transmit.filter; import java.io.IOException; -import java.net.URLDecoder; import javax.servlet.Filter; import javax.servlet.FilterChain; @@ -11,6 +10,7 @@ import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.http.HttpServletRequest; +import org.apache.commons.codec.binary.Base64; import org.apache.commons.lang3.StringUtils; import com.alibaba.fastjson.JSON; @@ -35,15 +35,17 @@ public class SimpleUserTransmitFilter implements Filter { log.debug("Header {} is: {}", UserContext.KEY_USER_IN_HTTP_HEADER, headerValue); if (StringUtils.isNotBlank(headerValue)) { try { - String jsonUser = URLDecoder.decode(headerValue,"UTF-8"); + //String jsonUser = URLDecoder.decode(headerValue,"UTF-8"); + String jsonUser = new String(Base64.decodeBase64(headerValue), "UTF-8"); log.debug("jsonUser is: {}", jsonUser); User user = JSON.parseObject(jsonUser, User.class); log.debug("User is: {}", user); UserContext.setUser(user); + log.debug("User get from header: ok"); } catch (Exception e) { - log.warn("User get error", e); + log.warn("User get from header: error", e); } } diff --git a/gateway/pom.xml b/gateway/pom.xml index 7f39a11..86dfd32 100644 --- a/gateway/pom.xml +++ b/gateway/pom.xml @@ -112,7 +112,11 @@ sw-backend-common-framework - + + commons-codec + commons-codec + + com.alibaba fastjson diff --git a/gateway/src/main/java/com/supwisdom/institute/backend/gateway/filter/SimpleUserTransmitGlobalFilter.java b/gateway/src/main/java/com/supwisdom/institute/backend/gateway/filter/SimpleUserTransmitGlobalFilter.java index 9b64970..c0e4910 100644 --- a/gateway/src/main/java/com/supwisdom/institute/backend/gateway/filter/SimpleUserTransmitGlobalFilter.java +++ b/gateway/src/main/java/com/supwisdom/institute/backend/gateway/filter/SimpleUserTransmitGlobalFilter.java @@ -1,9 +1,8 @@ package com.supwisdom.institute.backend.gateway.filter; -import java.net.URLDecoder; - import lombok.extern.slf4j.Slf4j; +import org.apache.commons.codec.binary.Base64; import org.springframework.cloud.gateway.filter.GatewayFilterChain; import org.springframework.cloud.gateway.filter.GlobalFilter; import org.springframework.core.Ordered; @@ -38,20 +37,24 @@ public class SimpleUserTransmitGlobalFilter implements GlobalFilter, Ordered { .map(SecurityContext::getAuthentication) .map(Authentication::getPrincipal) .cast(InfrasUser.class) - .map(myUser -> { + .map(infrasUser -> { try { - User user = new User(myUser.getUsername(), myUser.getRoles(), myUser.getAttributes()); + User user = new User(infrasUser.getUsername(), infrasUser.getRoles(), infrasUser.getAttributes()); String jsonUser = JSONObject.toJSONString(user); - log.info(jsonUser); - String headerValue = new String(URLDecoder.decode(jsonUser,"UTF-8")); + log.debug(jsonUser); + + //String headerValue = new String(URLDecoder.decode(jsonUser,"UTF-8")); + String headerValue = Base64.encodeBase64String(jsonUser.getBytes("UTF-8")); + log.debug(jsonUser); + ServerHttpRequest request = exchange.getRequest().mutate() .header(UserContext.KEY_USER_IN_HTTP_HEADER, headerValue) .build(); - log.debug("User set ok"); + log.debug("User set to gateway header: ok"); return exchange.mutate().request(request).build(); } catch (Exception e) { - log.warn("User set error", e); + log.warn("User set to gateway header: error", e); } return exchange; })