Init
This commit is contained in:
@@ -0,0 +1,37 @@
|
||||
package de.w665.testing.config;
|
||||
|
||||
import org.springframework.http.server.ServerHttpRequest;
|
||||
import org.springframework.http.server.ServerHttpResponse;
|
||||
import org.springframework.web.socket.WebSocketHandler;
|
||||
import org.springframework.web.socket.server.HandshakeInterceptor;
|
||||
|
||||
import java.net.URI;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
public class UsernameHandshakeInterceptor implements HandshakeInterceptor {
|
||||
@Override
|
||||
public boolean beforeHandshake(ServerHttpRequest request, ServerHttpResponse response, WebSocketHandler wsHandler, Map<String, Object> attributes) {
|
||||
URI uri = request.getURI();
|
||||
String query = uri.getQuery();
|
||||
if (query != null) {
|
||||
for (String pair : query.split("&")) {
|
||||
String[] kv = pair.split("=", 2);
|
||||
if (kv.length == 2 && kv[0].equals("token")) {
|
||||
attributes.put("token", kv[1]);
|
||||
}
|
||||
}
|
||||
}
|
||||
// Also check headers (not used by SockJS handshake, but harmless)
|
||||
List<String> header = request.getHeaders().get("X-Auth-Token");
|
||||
if (header != null && !header.isEmpty()) {
|
||||
attributes.put("token", header.getFirst());
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void afterHandshake(ServerHttpRequest request, ServerHttpResponse response, WebSocketHandler wsHandler, Exception exception) {
|
||||
// no-op
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user