From 4cc4e8a8fa341fd2e375566eb2aefddc03aa97f4 Mon Sep 17 00:00:00 2001 From: RuoYi Date: Wed, 6 Jan 2021 12:00:41 +0800 Subject: [PATCH] =?UTF-8?q?=E7=BC=96=E7=A0=81=E8=A7=A3=E7=A0=81=E7=94=A8?= =?UTF-8?q?=E6=88=B7=E5=90=8D=EF=BC=8C=E9=98=B2=E6=AD=A2=E4=B8=AD=E6=96=87?= =?UTF-8?q?=E5=87=BA=E7=8E=B0=E4=B9=B1=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/ruoyi/common/core/utils/SecurityUtils.java | 14 ++------ .../com/ruoyi/common/core/utils/ServletUtils.java | 40 ++++++++++++++++++++++ .../com/ruoyi/common/log/aspect/LogAspect.java | 5 ++- .../java/com/ruoyi/gateway/filter/AuthFilter.java | 19 ++-------- 4 files changed, 47 insertions(+), 31 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 36eb90c..f2225be 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,15 +1,10 @@ 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; - /** * 权限获取工具类 * @@ -22,13 +17,8 @@ public class SecurityUtils */ public static String getUsername() { - String username = ""; - try { - username = URLDecoder.decode(ServletUtils.getRequest().getHeader(CacheConstants.DETAILS_USERNAME), "UTF-8"); - } catch (UnsupportedEncodingException e) { - throw new BaseException("获取username失败"); - } - return username; + String username = ServletUtils.getRequest().getHeader(CacheConstants.DETAILS_USERNAME); + return ServletUtils.urlDecode(username); } /** diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/ServletUtils.java b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/ServletUtils.java index 5346483..6809f29 100644 --- a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/ServletUtils.java +++ b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/ServletUtils.java @@ -1,6 +1,9 @@ package com.ruoyi.common.core.utils; import java.io.IOException; +import java.io.UnsupportedEncodingException; +import java.net.URLDecoder; +import java.net.URLEncoder; import java.util.Enumeration; import java.util.LinkedHashMap; import java.util.Map; @@ -10,6 +13,7 @@ import javax.servlet.http.HttpSession; import org.springframework.web.context.request.RequestAttributes; import org.springframework.web.context.request.RequestContextHolder; import org.springframework.web.context.request.ServletRequestAttributes; +import com.ruoyi.common.core.constant.Constants; import com.ruoyi.common.core.text.Convert; /** @@ -173,4 +177,40 @@ public class ServletUtils } return false; } + + /** + * 内容编码 + * + * @param str 内容 + * @return 编码后的内容 + */ + public static String urlEncode(String str) + { + try + { + return URLEncoder.encode(str, Constants.UTF8); + } + catch (UnsupportedEncodingException e) + { + return ""; + } + } + + /** + * 内容解码 + * + * @param str 内容 + * @return 解码后的内容 + */ + public static String urlDecode(String str) + { + try + { + return URLDecoder.decode(str, Constants.UTF8); + } + catch (UnsupportedEncodingException e) + { + return ""; + } + } } diff --git a/ruoyi-common/ruoyi-common-log/src/main/java/com/ruoyi/common/log/aspect/LogAspect.java b/ruoyi-common/ruoyi-common-log/src/main/java/com/ruoyi/common/log/aspect/LogAspect.java index d0a557e..e76018e 100644 --- a/ruoyi-common/ruoyi-common-log/src/main/java/com/ruoyi/common/log/aspect/LogAspect.java +++ b/ruoyi-common/ruoyi-common-log/src/main/java/com/ruoyi/common/log/aspect/LogAspect.java @@ -20,7 +20,7 @@ import org.springframework.http.HttpMethod; import org.springframework.stereotype.Component; import org.springframework.web.multipart.MultipartFile; import com.alibaba.fastjson.JSON; -import com.ruoyi.common.core.constant.CacheConstants; +import com.ruoyi.common.core.utils.SecurityUtils; import com.ruoyi.common.core.utils.ServletUtils; import com.ruoyi.common.core.utils.StringUtils; import com.ruoyi.common.core.utils.ip.IpUtils; @@ -93,8 +93,7 @@ public class LogAspect operLog.setJsonResult(JSON.toJSONString(jsonResult)); operLog.setOperUrl(ServletUtils.getRequest().getRequestURI()); - HttpServletRequest request = ServletUtils.getRequest(); - String username = request.getHeader(CacheConstants.DETAILS_USERNAME); + String username = SecurityUtils.getUsername(); if (StringUtils.isNotBlank(username)) { operLog.setOperName(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 fa5519a..1bd3994 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 @@ -20,12 +20,11 @@ import com.alibaba.fastjson.JSONObject; import com.ruoyi.common.core.constant.CacheConstants; import com.ruoyi.common.core.constant.Constants; import com.ruoyi.common.core.domain.R; +import com.ruoyi.common.core.utils.ServletUtils; 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; /** * 网关鉴权 @@ -70,7 +69,7 @@ public class AuthFilter implements GlobalFilter, Ordered } JSONObject obj = JSONObject.parseObject(userStr); String userid = obj.getString("userid"); - String username = urlEncode(obj.getString("username")); + String username = obj.getString("username"); if (StringUtils.isBlank(userid) || StringUtils.isBlank(username)) { return setUnauthorizedResponse(exchange, "令牌验证失败"); @@ -80,7 +79,7 @@ public class AuthFilter implements GlobalFilter, Ordered redisService.expire(getTokenKey(token), EXPIRE_TIME); // 设置用户信息到请求 ServerHttpRequest mutableReq = exchange.getRequest().mutate().header(CacheConstants.DETAILS_USER_ID, userid) - .header(CacheConstants.DETAILS_USERNAME, username).build(); + .header(CacheConstants.DETAILS_USERNAME, ServletUtils.urlEncode(username)).build(); ServerWebExchange mutableExchange = exchange.mutate().request(mutableReq).build(); return chain.filter(mutableExchange); @@ -106,18 +105,6 @@ public class AuthFilter implements GlobalFilter, Ordered } /** - * 编码 - */ - private String urlEncode(String value) { - try { - value = URLEncoder.encode(value, "UTF-8"); - } catch (UnsupportedEncodingException e) { - e.printStackTrace(); - } - return value; - } - - /** * 获取请求token */ private String getToken(ServerHttpRequest request)