Files
system-file/src/main/java/com/filesystem/config/WebSocketAuthInterceptor.java
2026-04-01 22:39:11 +08:00

44 lines
1.6 KiB
Java

package com.filesystem.config;
import com.filesystem.security.JwtUtil;
import jakarta.annotation.Resource;
import org.springframework.http.server.ServerHttpRequest;
import org.springframework.http.server.ServerHttpResponse;
import org.springframework.http.server.ServletServerHttpRequest;
import org.springframework.stereotype.Component;
import org.springframework.web.socket.WebSocketHandler;
import org.springframework.web.socket.server.HandshakeInterceptor;
import java.util.Map;
@Component
public class WebSocketAuthInterceptor implements HandshakeInterceptor {
@Resource
private JwtUtil jwtUtil;
@Override
public boolean beforeHandshake(ServerHttpRequest request, ServerHttpResponse response,
WebSocketHandler wsHandler, Map<String, Object> attributes) throws Exception {
if (request instanceof ServletServerHttpRequest servletRequest) {
String token = servletRequest.getServletRequest().getParameter("token");
if (token != null) {
try {
Long userId = jwtUtil.getUserIdFromToken(token);
if (userId != null) {
attributes.put("userId", userId.toString());
return true;
}
} catch (Exception e) {
// JWT 解析失败
}
}
}
return false;
}
@Override
public void afterHandshake(ServerHttpRequest request, ServerHttpResponse response,
WebSocketHandler wsHandler, Exception exception) {
}
}