知识库历史文件
This commit is contained in:
@@ -84,17 +84,28 @@ public class LoginUtil {
|
||||
}
|
||||
|
||||
/**
|
||||
* 从请求头获取Token
|
||||
* 从请求头或Dubbo RpcContext获取Token
|
||||
*/
|
||||
public static String getToken() {
|
||||
// 1. 优先从HTTP请求头获取(正常Web请求)
|
||||
HttpServletRequest request = getRequest();
|
||||
if (request == null) {
|
||||
return null;
|
||||
if (request != null) {
|
||||
String authHeader = request.getHeader(AUTHORIZATION_HEADER);
|
||||
if (StringUtils.hasText(authHeader) && authHeader.startsWith(BEARER_PREFIX)) {
|
||||
return authHeader.substring(BEARER_PREFIX.length());
|
||||
}
|
||||
}
|
||||
|
||||
String authHeader = request.getHeader(AUTHORIZATION_HEADER);
|
||||
if (StringUtils.hasText(authHeader) && authHeader.startsWith(BEARER_PREFIX)) {
|
||||
return authHeader.substring(BEARER_PREFIX.length());
|
||||
// 2. 从Dubbo Provider ThreadLocal获取(跨服务调用)
|
||||
try {
|
||||
Class<?> filterClass = Class.forName("org.xyzh.common.auth.filter.DubboProviderContextFilter");
|
||||
ThreadLocal<String> tokenHolder = (ThreadLocal<String>) filterClass.getField("TOKEN_HOLDER").get(null);
|
||||
String token = tokenHolder.get();
|
||||
if (StringUtils.hasText(token)) {
|
||||
return token;
|
||||
}
|
||||
} catch (Exception e) {
|
||||
// Dubbo Filter不存在或未加载,忽略
|
||||
}
|
||||
|
||||
return null;
|
||||
|
||||
Reference in New Issue
Block a user