fix: WebSocket解析token问题修复

This commit is contained in:
hxr
2024-05-13 23:47:03 +08:00
parent 8a064a22d9
commit feac84cdd8

View File

@@ -3,6 +3,7 @@ package com.youlai.system.config;
import cn.hutool.core.util.StrUtil;
import cn.hutool.jwt.JWTPayload;
import cn.hutool.jwt.JWTUtil;
import com.youlai.system.common.constant.SecurityConstants;
import lombok.extern.slf4j.Slf4j;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.HttpHeaders;
@@ -80,11 +81,8 @@ public class WebSocketConfig implements WebSocketMessageBrokerConfigurer {
if (StrUtil.isNotBlank(bearerToken) && bearerToken.startsWith("Bearer ")) {
try {
// 移除 "Bearer " 前缀,从令牌中提取用户信息(username), 并设置到认证信息中
// 这里不应该用"name"
// String username = JwtUtils.parseToken(bearerToken).get("name").toString();
bearerToken = bearerToken.substring(SecurityConstants.JWT_TOKEN_PREFIX.length());
String username = JWTUtil.parseToken(bearerToken).getPayloads().getStr(JWTPayload.SUBJECT);
if (StrUtil.isNotBlank(username)) {
accessor.setUser(() -> username);
return message;