From 0cc36e414528c757785dd3d4c9ef3aee984e26f4 Mon Sep 17 00:00:00 2001 From: hongawen <83944980@qq.com> Date: Fri, 11 Apr 2025 14:15:48 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=85=AC=E5=85=B1=E6=96=B9?= =?UTF-8?q?=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/njcn/web/utils/RequestUtil.java | 67 +++++++++++++++++-- 1 file changed, 60 insertions(+), 7 deletions(-) diff --git a/njcn-springboot/spingboot2.3.12/src/main/java/com/njcn/web/utils/RequestUtil.java b/njcn-springboot/spingboot2.3.12/src/main/java/com/njcn/web/utils/RequestUtil.java index 3f30e2a..0079634 100644 --- a/njcn-springboot/spingboot2.3.12/src/main/java/com/njcn/web/utils/RequestUtil.java +++ b/njcn-springboot/spingboot2.3.12/src/main/java/com/njcn/web/utils/RequestUtil.java @@ -5,9 +5,12 @@ import cn.hutool.extra.spring.SpringUtil; import cn.hutool.json.JSONObject; import cn.hutool.json.JSONUtil; import com.njcn.common.bean.CustomCacheUtil; +import com.njcn.common.pojo.constant.LogInfo; import com.njcn.common.pojo.constant.SecurityConstants; import com.njcn.common.utils.JwtUtil; import org.apache.logging.log4j.util.Strings; +import org.springframework.http.server.ServerHttpRequest; +import org.springframework.http.server.ServletServerHttpRequest; import javax.servlet.http.HttpServletRequest; import java.util.Map; @@ -17,6 +20,21 @@ import java.util.Map; * @data 2025-02-24 */ public class RequestUtil { + /** + * 获取当前请求的AccessToken + * + * @return 若成功,返回当前请求的AccessToken;若失败,返回null + */ + public static String getAccessToken(ServerHttpRequest serverHttpRequest) { + HttpServletRequest request = getRequest(serverHttpRequest); + String accessTokenStr = request.getHeader(SecurityConstants.AUTHORIZATION_KEY); + String accessToken = null; + if (StrUtil.isNotBlank(accessTokenStr) && accessTokenStr.startsWith(SecurityConstants.AUTHORIZATION_PREFIX)) { + accessToken = accessTokenStr.replace(SecurityConstants.AUTHORIZATION_PREFIX, Strings.EMPTY); + } + return "".equals(accessToken) ? null : accessToken; + } + /** * 获取当前请求的AccessToken * @@ -29,7 +47,7 @@ public class RequestUtil { if (StrUtil.isNotBlank(accessTokenStr) && accessTokenStr.startsWith(SecurityConstants.AUTHORIZATION_PREFIX)) { accessToken = accessTokenStr.replace(SecurityConstants.AUTHORIZATION_PREFIX, Strings.EMPTY); } - return "".equals(accessToken)? null : accessToken; + return "".equals(accessToken) ? null : accessToken; } /** @@ -38,8 +56,23 @@ public class RequestUtil { * @return */ public static String getUserIp() { - HttpServletRequest request = HttpServletUtil.getRequest(); - return request.getRemoteAddr(); + HttpServletRequest request = HttpServletUtil.getRequest();; + return StrUtil.isBlank(request.getRemoteAddr()) ? "127.0.0.1" : request.getRemoteAddr(); + } + + /** + * 获取当前登录用户的ID + * + * @return 若成功,返回当前登录用户的ID;若失败,返回null + */ + public static String getUserId(ServerHttpRequest serverHttpRequest) { + String accessToken = getAccessToken(serverHttpRequest); + String userId = null; + if (StrUtil.isNotBlank(accessToken)) { + Map map = JwtUtil.parseToken(accessToken); + userId = (String) map.get(SecurityConstants.USER_ID); + } + return userId; } /** @@ -62,8 +95,8 @@ public class RequestUtil { * * @return 若成功,返回当前登录用户的用户名;若失败,返回null */ - public static String getUserName() { - String userJson = getUserJson(); + public static String getUserName(ServerHttpRequest serverHttpRequest) { + String userJson = getUserJson(serverHttpRequest); String username = null; if (StrUtil.isNotBlank(userJson)) { JSONObject obj = JSONUtil.parseObj(userJson); @@ -72,13 +105,33 @@ public class RequestUtil { return username; } + + /** + * 获取用户登录名称 + * 该方法通常用于未登录阶段,无token信息 + */ + public static String getLoginName() { + HttpServletRequest request = HttpServletUtil.getRequest();; + String loginName = (String) request.getAttribute(SecurityConstants.AUTHENTICATE_USERNAME); + return StrUtil.isBlank(loginName) ? LogInfo.UNKNOWN_USER : loginName; + } + + /** + * 获取请求体 + */ + public static HttpServletRequest getRequest(ServerHttpRequest request) { + ServletServerHttpRequest servletServerHttpRequest = (ServletServerHttpRequest) request; + return servletServerHttpRequest.getServletRequest(); + } + + /** * 从缓冲中获取当前登录用户的JSON格式的用户信息 * * @return 若成功,返回当前登录用户的JSON格式的用户信息;若失败,返回null */ - public static String getUserJson() { - String accessToken = getAccessToken(); + public static String getUserJson(ServerHttpRequest serverHttpRequest) { + String accessToken = getAccessToken(serverHttpRequest); String userJson = null; if (StrUtil.isNotBlank(accessToken)) { CustomCacheUtil customCacheUtil = SpringUtil.getBean(CustomCacheUtil.CACHE_NAME);