2010-01-06 4 views
1

J'ai une application Web qui utilise le flux web de printemps et la sécurité du ressort. J'ai un problème avec la concurrence et voici le scénario.Concurrence de sécurité de printemps sur différents navigateurs

Lorsque je me connecte et que j'accède à une page d'édition, et que mon compte était déjà restreint pour cette opération, je ne suis pas censé pouvoir effectuer l'opération déjà. Je vois que depuis mon enregistrement de ROLE dans la session a été chargé lors de la connexion afin que cela se produise naturellement. Quelle est la meilleure pratique pour cela. Dois-je demander mon rôle et le remplacer dans la session POUR CHAQUE opération critique ou opération restreinte? N'est-ce pas un surcoût pour le serveur?

+0

Vous souhaitez limiter l'accès à une page à un utilisateur à temps? – rodrigoap

+0

Pas nécessairement. Tant que je peux garder une trace des droits d'accès de l'utilisateur à tout moment n'importe où. Alors dois-je interroger les droits d'accès d'un utilisateur pour chaque chargement de page? Je pensais à un seul signe, mais je ne sais pas s'il est facile d'utiliser le flux printanier et printanier – cedric

Répondre

0
  • Conserver le cache de <user id, timestamp> des utilisateurs dont les autorisations ont été modifiées récemment. Laissez les entrées de cache expirer après deux fois l'expiration de la session.
  • Ajouter un filtre personnalisé qui reconnaît les sessions ayant déjà SecurityContext:
    • Si la session SecurityContext contient Principal dont l'ID utilisateur est dans la de cache et la session a récemment changé getLastAccessTime() est antérieure à un horodatage de changement, réauthentifier explicitement à l'utilisateur une nouvelle les autorités.

Cette solution prendra en charge les autorisations de mise à niveau et de déclasser des scénarios.

Vous pouvez voir un bon exemple de l'utilisateur dans org.springframework.security.web.authentication.switchuser.SwitchUserFilter

Questions connexes