diff --git a/README.md b/README.md index b1b79660..dee2b480 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@
-
+
diff --git a/src/main/java/com/youlai/system/config/WebSocketConfig.java b/src/main/java/com/youlai/system/config/WebSocketConfig.java
index 75f8ed21..fdf86e20 100644
--- a/src/main/java/com/youlai/system/config/WebSocketConfig.java
+++ b/src/main/java/com/youlai/system/config/WebSocketConfig.java
@@ -1,6 +1,7 @@
package com.youlai.system.config;
import cn.hutool.core.util.StrUtil;
+import cn.hutool.jwt.JWTPayload;
import com.youlai.system.security.util.JwtUtils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.context.annotation.Configuration;
@@ -79,7 +80,10 @@ public class WebSocketConfig implements WebSocketMessageBrokerConfigurer {
if (StrUtil.isNotBlank(bearerToken) && bearerToken.startsWith("Bearer ")) {
try {
// 移除 "Bearer " 前缀,从令牌中提取用户信息(username), 并设置到认证信息中
- String username = JwtUtils.parseToken(bearerToken).get("name").toString();
+
+ // 这里不应该用"name"
+ // String username = JwtUtils.parseToken(bearerToken).get("name").toString();
+ String username = JwtUtils.parseToken(bearerToken).get(JWTPayload.SUBJECT).toString();
if (StrUtil.isNotBlank(username)) {
accessor.setUser(() -> username);
diff --git a/src/main/java/com/youlai/system/security/util/JwtUtils.java b/src/main/java/com/youlai/system/security/util/JwtUtils.java
index ca8fb2f4..447e1dc3 100644
--- a/src/main/java/com/youlai/system/security/util/JwtUtils.java
+++ b/src/main/java/com/youlai/system/security/util/JwtUtils.java
@@ -52,9 +52,7 @@ public class JwtUtils {
}
/**
- * 创建Token
- *
- * 认证成功后的用户信息会被封装到 Authentication 对象中,然后通过 JwtTokenProvider#createToken(Authentication) 方法创建 Token 字符串
+ * 生成 JWT Token
*
* @param authentication 用户认证信息
* @return Token 字符串
@@ -85,11 +83,35 @@ public class JwtUtils {
return JWTUtil.createToken(payload, JwtUtils.key);
}
+
/**
- * 从 Token 中解析数据
+ * 从 JWT Token 中解析 Authentication 用户认证信息
+ *
+ * @param payload JWT 载体
+ * @return 用户认证信息
+ */
+ public static UsernamePasswordAuthenticationToken getAuthentication(Map