ASP.NET Kill Session Par Id
Ma demande a un contrôle des Autorisations de l'Utilisateur, parce que pas tous les utilisateurs peuvent accéder à tout le site web. À ce moment, tous ces autorisations pour un utilisateur spécifique sont stockées dans sa session, parce que Ça serait un problème pour moi à la recherche à la Base de données de tous les Postes de Retour.
Le problème est que lorsque je supprimer une autorisation, l'utilisateur peut toujours accéder à la page, et seulement quand il ferme le navigateur, la mise à jour prenne effet.
Est-il un moyen de Tuer une Application spécifique de la Session par l'ID, forçant l'utilisateur à se Connecter à nouveau?
source d'informationauteur Bruno Mayer
Vous devez vous connecter pour publier un commentaire.
Pas. Vous ne pouvez accéder à l'objet de la Session de l'utilisateur en fait la demande actuelle (c'est à dire vous-même), pas d'autres utilisateurs les objets de Session.
Donc, vous avez besoin de stocker l'id de l'utilisateur ailleurs, par exemple dans une statique de la collection. Lorsque l'utilisateur en fait la demande suivante vous permet de vérifier si l'id est dans la collection, et de mettre à jour les autorisations ou de déconnecter l'utilisateur.
Une autre alternative serait de garder les objets d'autorisation de tous les utilisateurs connectés à un statique de la collection ainsi que dans leur variable de Session. De cette façon vous serez en mesure de modifier l'objet de l'autorisation, sans accéder à l'objet de la Session de l'utilisateur.
À l'aide de variables statiques dans une application web vient bien sûr avec les précautions d'usage. Comme plusieurs threads peuvent accéder, de l'accès synchonised. Aussi, comme Alexei Levenkov souligné, si vous disposez de plusieurs serveurs, vous devez conserver les données synchonised entre les serveurs.
Vous pouvez écrire
Session.Abandon();
ouSession.Clear();
ou
Session.SessionID[int index];
magasin de l'utilisateur de la session de valeur et ensuite utiliser
Session.Abandon();
etSession.Clear();
Pour le meurtre d'une séance particulière, essayez d'utiliser
Session.Remove("key");
Pour supprimer un morceau particulier de
Session
puis utilisezSession.Remove()
comme ceci:Remarque: Cette opération supprime la valeur et la clé de
Session
tandis que vous pouvez voir des gens utiliserSession["YourKey"] = null;
qui ne fera que supprimer la valeur, mais laisser la clé. Cela peut ou peut ne pas être ce que vous voulez, mais je voulais juste souligner la distinction.