提交 150f913b 作者: 方治民

fix: 修复 websocket 连接用户没有正常显示用户名问题

上级 51c43955
/* (C) 2022 YiRing, Inc. */ /* (C) 2022 YiRing, Inc. */
package com.yiring.websocket.interceptor; package com.yiring.websocket.interceptor;
import cn.hutool.core.convert.Convert;
import com.yiring.auth.domain.user.User; import com.yiring.auth.domain.user.User;
import com.yiring.auth.util.Auths; import com.yiring.auth.util.Auths;
import com.yiring.common.core.Redis; import com.yiring.common.core.Redis;
import com.yiring.websocket.constant.RedisKey; import com.yiring.websocket.constant.RedisKey;
import com.yiring.websocket.domain.StompPrincipal; import com.yiring.websocket.domain.StompPrincipal;
import java.util.LinkedList; import java.util.Collection;
import java.util.Map; import java.util.Map;
import lombok.NonNull; import lombok.NonNull;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
...@@ -51,10 +52,10 @@ public class ClientInboundChannelInterceptor implements ChannelInterceptor { ...@@ -51,10 +52,10 @@ public class ClientInboundChannelInterceptor implements ChannelInterceptor {
principal.setSession(accessor.getSessionId()); principal.setSession(accessor.getSessionId());
Object tokens = ((Map<?, ?>) raw).get("token"); Object tokens = ((Map<?, ?>) raw).get("token");
if (tokens instanceof LinkedList) { if (tokens instanceof Collection<?>) {
String token = ((LinkedList<?>) tokens).getFirst().toString(); String token = Convert.toList(String.class, tokens).get(0);
User user = auths.getUserByToken(token); User user = auths.getUserByToken(token);
principal.setUser(user.getUsername()); principal.setUser(user.getRealName());
principal.setType(StompPrincipal.Type.LOGIN_USER); principal.setType(StompPrincipal.Type.LOGIN_USER);
} else { } else {
principal.setUser("Guest." + principal.getSession()); principal.setUser("Guest." + principal.getSession());
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论