From 7a0d0e54e7d31c3a70e0df3a6ba3c7f0756399de Mon Sep 17 00:00:00 2001 From: DokiYolo <857815116@qq.com> Date: Wed, 6 Jan 2021 10:06:57 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A7=A3=E5=86=B3header=E8=8E=B7=E5=8F=96usern?= =?UTF-8?q?ame=E4=B8=AD=E6=96=87=E6=83=85=E5=86=B5=E4=B8=8B=E4=B9=B1?= =?UTF-8?q?=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ruoyi/common/core/utils/SecurityUtils.java | 13 ++++++++++++- .../com/ruoyi/gateway/filter/AuthFilter.java | 16 +++++++++++++++- 2 files changed, 27 insertions(+), 2 deletions(-) diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/SecurityUtils.java b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/SecurityUtils.java index 3c5bf20b..36eb90c6 100644 --- a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/SecurityUtils.java +++ b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/SecurityUtils.java @@ -1,10 +1,15 @@ package com.ruoyi.common.core.utils; import javax.servlet.http.HttpServletRequest; + +import com.ruoyi.common.core.exception.BaseException; import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; import com.ruoyi.common.core.constant.CacheConstants; import com.ruoyi.common.core.text.Convert; +import java.io.UnsupportedEncodingException; +import java.net.URLDecoder; + /** * 权限获取工具类 * @@ -17,7 +22,13 @@ public class SecurityUtils */ public static String getUsername() { - return ServletUtils.getRequest().getHeader(CacheConstants.DETAILS_USERNAME); + String username = ""; + try { + username = URLDecoder.decode(ServletUtils.getRequest().getHeader(CacheConstants.DETAILS_USERNAME), "UTF-8"); + } catch (UnsupportedEncodingException e) { + throw new BaseException("获取username失败"); + } + return username; } /** diff --git a/ruoyi-gateway/src/main/java/com/ruoyi/gateway/filter/AuthFilter.java b/ruoyi-gateway/src/main/java/com/ruoyi/gateway/filter/AuthFilter.java index 36c72d6b..fa5519a7 100644 --- a/ruoyi-gateway/src/main/java/com/ruoyi/gateway/filter/AuthFilter.java +++ b/ruoyi-gateway/src/main/java/com/ruoyi/gateway/filter/AuthFilter.java @@ -24,6 +24,8 @@ import com.ruoyi.common.core.utils.StringUtils; import com.ruoyi.common.redis.service.RedisService; import com.ruoyi.gateway.config.properties.IgnoreWhiteProperties; import reactor.core.publisher.Mono; +import java.io.UnsupportedEncodingException; +import java.net.URLEncoder; /** * 网关鉴权 @@ -68,7 +70,7 @@ public class AuthFilter implements GlobalFilter, Ordered } JSONObject obj = JSONObject.parseObject(userStr); String userid = obj.getString("userid"); - String username = obj.getString("username"); + String username = urlEncode(obj.getString("username")); if (StringUtils.isBlank(userid) || StringUtils.isBlank(username)) { return setUnauthorizedResponse(exchange, "令牌验证失败"); @@ -103,6 +105,18 @@ public class AuthFilter implements GlobalFilter, Ordered return CacheConstants.LOGIN_TOKEN_KEY + token; } + /** + * 编码 + */ + private String urlEncode(String value) { + try { + value = URLEncoder.encode(value, "UTF-8"); + } catch (UnsupportedEncodingException e) { + e.printStackTrace(); + } + return value; + } + /** * 获取请求token */