Atmosphäre: Wie man eingeloggten Benutzer von WebSocket Verbindung in Grails?

9

Ich arbeite daran, die WebSockets-Funktionalität in meine Grails-Anwendung zu bringen. Ich benutze Atmosphere Meteor Plugin 0.7.1 für diesen Zweck. Der Workflow ist einfach:

  • Der Benutzer meldet sich im System an.
  • Benutzer öffnen Seite mit WebSockets-Funktionalität
  • Der Benutzer klickt auf die Schaltfläche Verbinden, um die Verbindung herzustellen ... und der Server erkennt ihn nicht.

Ich würde gerne wissen, welcher Benutzer meinen webSocket angeschlossen hat.

Normalerweise ist es ziemlich einfach, den aktuellen Benutzer zu erkennen, indem Sie springSecurityService.getPrincipal() in einem beliebigen Controller aufrufen. Es ist mir gelungen, springSecurityService in meinen MeteorHandler zu injizieren, aber es heißt, dass der Prinzipal null ist. Es fühlt sich seltsam für mich an, da der Handler Zugriff auf JSESSIONID cookie hat, also erwarte ich, dass er die richtigen Sitzungsdaten abruft.

Außerdem gibt der Befehl request.session ein anderes HttpSession-Objekt zurück, verglichen mit dem gleichen Befehl, der in der regulären Controller-Aktion ausgeführt wird.

Gibt es eine Möglichkeit, den aktuell angemeldeten Benutzer einer webSockets-Verbindung abzurufen?

Vielen Dank im Voraus.

    
Humanity 07.02.2014, 16:48
quelle

1 Antwort

3

Das Principal-Objekt konnte einfach von request.userPrincipal.principal

abgerufen werden

Es ist genau das gleiche Objekt wie in springSecurityService.getPrincipal()

Hier finden Sie weitere Informationen: Ссылка

    
Humanity 10.02.2014, 13:42
quelle