Question

J'utilise le printemps + tapisserie pour webuser authenticate. Je me demande est là une technique que je peux forcer tous les utilisateurs qui se connectent actuellement pour déconnectent laisse dire que je suis sur le scénario où le site est « en mode maintenance »

p / s: il sera en mesure de forcer le processus de fonctionnement de tous les utilisateurs à la fin et que la force vous déconnecter

Était-ce utile?

La solution

Le problème tente de les laisser terminer la demande et alors seulement les déconnectent. Je suppose que s'ils ont frappé d'économiser sur un formulaire, vous voulez que les données soient enregistrées, mais ils devraient être redirigé vers la page de maintenance. Pour les requêtes GET, vous pouvez simplement vous connecter à l'utilisateur si l'indicateur d'entretien est réglé. Sont POSTs Litle plus difficile parce que vous voulez compléter la demande mais les signer et de les rediriger vers la page de maintenance. Je voudrais essayer un filtre de demande. Gérer la demande comme normale, mais annule la session et utiliser response.sendRedirect si l'indicateur de maintenance est réglé.

Une autre option serait d'utiliser une minuterie JavaScript dans la mise en page - touché une page périodiquement pour voir si elles doivent être déconnectés. Ce ne serait probablement pas les laisser terminer leur demande actuelle si.

Autres conseils

Deux choses viennent à l'esprit:

  • Utilisation HttpSessionListener pour garder une trace de toutes les sessions et les invalident le moment venu. Pour utiliser cela, vous aurez besoin d'un Set d'objets Session dans votre ServletContext (ou moins de préférence - comme un champ statique). Mise à jour qui Set chaque fois qu'une session est créée ou détruite, et itérer l'ensemble est nécessaire quand infirmation.

  • utiliser un Filter (mis en correspondance /*) où, si certaines conditions (maintenance == true) sont remplies, invalident la session en cours. Ainsi, tous les utilisateurs seront déconnectés de leur prochaine action. Cela fonctionnerait dans les cas où « mode maintenance » ne signifie pas « arrêter tout le serveur », mais plutôt un moyen « doit être effectué aucune opération par les utilisateurs, je fais quelque chose d'important dans l'arrière-plan qui ne devrait pas être perturbé »

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top