增加公共方法

This commit is contained in:
2025-04-11 14:15:48 +08:00
parent 760ea9da5d
commit 0cc36e4145

View File

@@ -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<String, Object> 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);