2010-08-22 6 views
19

À des fins de consignation, je souhaite créer un enregistreur qui ajoute automatiquement l'ID de la session en cours aux lignes consignées.
pour les utilisateurs connectés ce n'est pas un problème:Récupération de l'ID de session avec Spring Security

((WebAuthenticationDetails) SecurityContextHolder.getContext().getAuthentication().getDetails()) 
    .getSessionId() 

Le problème est, avant que l'utilisateur a ouvert une session getAuthentication() retours null. Existe-t-il un autre moyen d'obtenir l'ID de session sans référence à la réponse en cours ou quoi que ce soit de ce type?

Merci!

+0

Cette question à ma question. Merci. Bonne façon de poser des questions. – TRiNE

Répondre

43

Vous pouvez utiliser

RequestContextHolder.currentRequestAttributes().getSessionId(); 

Cela repose sur RequestContextHolder du printemps, il devrait donc être utilisé avec Spring MVC ou de DispatcherServlet vous devriez avoir un RequestContextListener déclaré. Une session sera également créée si elle n'existe pas.

+0

Fonctionne comme un charme! Merci! – abyx

+0

@axtavt J'ai l'appli angulaire fonctionnant dans le port de diffrnt et le code de serveur s'exécute dans le port de diffrnt. Dans mon code serveur a mis en place la sécurité de printemps, il redirige vers un autre contrôleur java si le succès, en ce que j'ai enveloppé tous les rôles d'utilisateur et d'autres informations. mais je reçois un seul utilisateur «anonymusUser» dans mon URL de redirection n'a pas de cookie. est-ce surmonter votre solution .. – SakthiSureshAnand

Questions connexes