122 votes

Dans ASP.NET, quand dois-je utiliser Session.Clear() plutôt que Session.Abandon() ?

Les Session.Clear() et les Session.Abandon() se débarrasser de variables de session. Si je comprends bien, Abandon() se termine la session en cours et provoque une nouvelle session à créer ce qui provoque les événements fin et début d’incendie.

Il semble préférable d’appeler Abandon() dans la plupart des cas, par exemple déconnecter un utilisateur. Y a-t-il des scénarios où j’utiliserais Clear() plutôt ? Y a-t-il beaucoup d’une différence de performance ?

178voto

splattne Points 48126

Session.Abandon() détruit la session et le Session_OnEnd événement est déclenché.

Session.Clear() seulement supprime toutes les valeurs (contenu) de l'Objet. La session avec la même clé est toujours en vie.

Donc, si vous utilisez Session.Abandon(), vous perdez une session spécifique et l'utilisateur va obtenir une nouvelle clé de session. Vous pouvez l'utiliser par exemple lorsque l'utilisateur se déconnecte.

Utiliser Session.Clear(), si vous voulez que l'utilisateur reste dans la même session (si vous ne voulez pas que l'utilisateur de se reconnecter par exemple) et de réinitialiser tous la session de données spécifique.

14voto

shabbirh Points 330

Uniquement à l'aide de Session.Clear() lorsqu'un utilisateur se déconnecte peut poser un trou de sécurité. Tant que la session est encore valide si le Serveur Web est concerné. Il est alors raisonnablement mince affaire que de renifler, et de saisir l'Id de session, et de détourner de cette session.

Pour cette raison, lors de la déconnexion d'un utilisateur, il serait plus sûr et plus sensible à la Session d'utilisation.Abandonner() de sorte que la session est détruite, et une nouvelle session est créée (même si la déconnexion de l'INTERFACE utilisateur page ferait partie de la nouvelle session, la nouvelle session n'aurait aucun des utilisateurs des détails en elle et le détournement de la nouvelle session serait équivalent à une nouvelle session, par conséquent, il serait muet).

5voto

nick Points 61

Je ne sais pas encore ce qu’un exemple réel est où vous utiliseriez Session.Abondon(). Session.Clear() que je peux comprendre... si l’utilisateur clique sur votre lien de déconnexion et que vous les apporter à votre page « vous avez été déconnecté »... leur session de navigateur se poursuit, mais vous souhaitez supprimer les informations stockées dans la session. Si vous abandonés la session puis une nouvelle session serait créée tout de suite pour la page « vous avez été déconnecté ».

3voto

Kasim Shafiq Points 11

détruit la session, comme indiqué ci-dessus, alors vous devez utiliser ceci quand quelqu'un une déconnexion. Je pense qu’un bon usage de serait pour un panier d’achat sur un site de commerce électronique. De cette façon le panier obtient effacée sans déconnecter l’utilisateur.

0voto

MatthewMartin Points 12385

J’ai eu ce problème et essayé les deux, mais a dû se contenter pour enlever la merde comme « pageEditState », mais ne supprime pas d’informations utilisateur peur que je dois regarder à nouveau vers le haut.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X