Comment puis-je avoir la liste de tous les utilisateurs connectés (via spring security) mon application web
Je suis en utilisant le printemps de sécurité dans mon application web, et maintenant je veux avoir une liste de tous les utilisateurs qui sont enregistrés dans mon programme.
Comment puis-je avoir accès à cette liste? Ne sont-ils pas déjà gardé quelque part au sein du framework spring? Comme SecurityContextHolder ou SecurityContextRepository?
Vous devez vous connecter pour publier un commentaire.
Pour accéder à la liste de tous les utilisateurs connectés, vous devez injecter SessionRegistry instance de votre bean.
Et puis, à l'aide de injcted SessionRegistry vous pouvez accéder à la liste de toutes les directions d'école:
Mais avant d'injecter de la session de registre, vous devez définir la gestion de session dans le cadre de votre spring-security.xml (regardez Section Gestion des sessions au Printemps de Sécurité de la documentation de référence) et dans la simultanéité de contrôle de la section, vous devez définir des alias pour la session de registre de l'objet (session du registre de alias) qui vous injecter.
Dans JavaConfig, il devrait ressembler à ceci:
Avec le code d'appel qui ressemble à ceci:
Noter que
SecurityUser
est ma propre classe qui implémenteUserDetails
.S'il vous plaît corrigez-moi si je me trompe.
Je pense que @Adam réponse est incomplète. J'ai remarqué que les sessions déjà expiré dans la liste ont été apparaissant de nouveau.
Espère que cela aide.
S'il vous plaît corrigez-moi si je me trompe aussi.
Je pense que @Adam et @elysch la réponse est incomplète. J'ai remarqué qu'il y a besoin d'ajouter l'écouteur:
à
avec la sécurité conf:
Et alors vous obtiendrez actuelle utilisateurs en ligne!
Vous avez besoin d'injecter
SessionRegistry
(comme mentionné plus tôt) et puis vous pouvez le faire dans un pipeline comme ceci:Similaire à @rolyanos solution, la mienne, pour moi, toujours des travaux:
- pour le contrôleur
- pour le front-end
- pour le printemps confing
Trouve cette remarque assez importante et pertinente:
https://docs.spring.io/spring-security/site/docs/3.1.x/reference/session-mgmt.html#d0e4399
Aussi, apparemment beaucoup de gens ont des ennuis sessionRegistry.getAllPrincipals() retour quelque chose de différent à partir d'un tableau vide. Dans mon cas, j'ai corrigé par l'ajout de la sessionAuthenticationStrategy à mon habitude authenticationFilter: