2015-02-17 6 views
5

Sto utilizzando un'implementazione molto sottile di Spring WebSockets. WebSocketSession ha il metodo getPrincipal(), ma come posso impostarlo da un oggetto HandshakeInterceptor?Come impostare un preside all'interno di un HandshakeInterceptor

Il metodo vorrei mettere il Principal in è:

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

vedere il codice sorgente di 'DefaultHandshakeHandler': come si ottiene accordo con' RequestUpgradeStrategy'. E inoltre qualsiasi implementazione di 'RequestUpgradeStrategy'. –

risposta

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.    
} 
Problemi correlati