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

Session.Clear () et Session.Abandon () éliminent toutes les variables de session. Si je comprends bien, Abandon () met fin à la session en cours et crée une nouvelle session provoquant le déclenchement des événements End et Start.

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

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

Session.Clear() supprime simplement toutes les valeurs (contenu) de l’object. La session avec la même clé est toujours active.

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

Utilisez Session.Clear() si vous souhaitez que l’utilisateur rest dans la même session (si vous ne souhaitez pas que l’utilisateur se reconnecte par exemple) et réinitialise toutes les données spécifiques à la session.

Utiliser uniquement Session.Clear () lorsqu’un utilisateur se déconnecte peut poser une faille de sécurité. La session étant toujours valide pour le serveur Web. Il est alors raisonnablement sortingvial de sniffer, de saisir l’ID de session et de détourner cette session.

Pour cette raison, lors de la déconnexion d’un utilisateur, il serait plus sûr et plus judicieux d’utiliser Session.Abandon () afin de détruire la session et de créer une nouvelle session (même si la page d’interface de déconnexion ferait partie de la nouvelle session). la nouvelle session ne contiendrait aucun détail d’utilisateur et le détournement de la nouvelle session équivaudrait à une nouvelle session, ce qui la rendrait muette).

Je ne suis toujours pas sûr de ce qu’est un exemple réel où vous utiliseriez Session.Abondon() , Session.Clear() .

Je peux comprendre … si l’utilisateur clique sur votre lien de déconnexion et que vous les amenez à 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 avez abandonné la session, une nouvelle session sera immédiatement créée pour la page “Vous avez été déconnecté”.

Session.Abandon détruit la session comme indiqué ci-dessus, vous devez donc l’utiliser lors de la connexion de quelqu’un. Je pense qu’un bon usage de Session.Clear serait pour un panier d’achat sur un site de commerce électronique. De cette façon, le panier est effacé sans déconnecter l’utilisateur.

J’ai eu ce problème et essayé les deux, mais j’ai dû me contenter de supprimer la merde comme “pageEditState”, mais ne pas supprimer les informations utilisateur de peur que je doive le chercher à nouveau.

 public static void RemoveEverythingButUserInfo() { foreach (Ssortingng o in HttpContext.Current.Session.Keys) { if (o != "UserInfoIDontWantToAskForAgain") keys.Add(o); } }