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