2015-02-17 11 views
5

Ich verwende eine sehr dünne Implementierung von Spring WebSockets. WebSocketSession hat die Methode getPrincipal(), aber wie kann ich sie innerhalb eines HandshakeInterceptors einstellen?So legen Sie einen Principal in einem HandshakeInterceptor fest

Die Methode Ich mag würde in das Haupt setzen ist:

public boolean beforeHandshake(final ServerHttpRequest request, final ServerHttpResponse response, final WebSocketHandler wsHandler, 
     final Map<String, Object> attributes) throws Exception { 
    Principal = getPrincipal(); 
    // Now where to set the principal so it is available in WebSocketSession? 

} 
+0

den Quellcode 'DefaultHandshakeHandler' Siehe: Wie es Deal mit' RequestUpgradeStrategy' bekommt. Und weiter jede 'RequestUpgradeStrategy'-Implementierung. –

Antwort

2
registry.addEndpoint("/hello") 
.setHandshakeHandler(new DefaultHandshakeHandler() { 
    @Override 
    protected Principal determineUser(ServerHttpRequest request, WebSocketHandler wsHandler, Map<String, Object> attributes) { 

//Here you can set and return principal that is used by websocket session.    
} 
Verwandte Themen