增加公共方法
This commit is contained in:
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user