Question

Session.Clear () et Session.Abandon () éliminent toutes les variables de session. Si j'ai bien compris, Abandon () met fin à la session en cours et entraîne la création d'une nouvelle session, entraînant ainsi le déclenchement des événements End et Start.

Il semble préférable d'appeler Abandon () dans la plupart des cas, par exemple pour déconnecter un utilisateur. Existe-t-il des scénarios dans lesquels j'utiliserais Clear () à la place? Y a-t-il beaucoup de différence de performances?

Était-ce utile?

La solution

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

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

Ainsi, 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 reste dans la même session (si vous ne souhaitez pas qu'il se reconnecte par exemple) et réinitialise toutes les données spécifiques à la session.

Autres conseils

Utiliser uniquement Session.Clear () lorsqu'un utilisateur se déconnecte peut créer une faille de sécurité. Comme la session est toujours valide en ce qui concerne le serveur Web. Il est alors relativement facile de détecter, de saisir l’identifiant de session et de détourner cette session.

Pour cette raison, lors de la déconnexion d'un utilisateur, il serait plus prudent et plus judicieux d'utiliser Session.Abandon () afin que la session soit détruite et qu'une nouvelle session soit créée (même si la page de l'interface de déconnexion fait partie de la nouvelle session, les détails des utilisateurs ne figureront pas dans la nouvelle session et détourner la nouvelle session équivaudrait à ouvrir une nouvelle session, ce qui le rendrait muet).

Je ne sais toujours pas quel exemple concret utiliser Session.Abondon () , Session.Clear () .

Je peux comprendre ... si l'utilisateur clique sur votre lien de déconnexion et que vous le dirigez vers votre " vous avez été déconnecté " page .... leur session de navigateur se poursuit mais vous souhaitez supprimer les informations stockées dans la session. Si vous abandonnez la session, une nouvelle session sera immédiatement créée pour le message "vous avez été déconnecté". page.

Session.Abandon détruit la session comme indiqué ci-dessus, vous devez donc l'utiliser pour déconnecter 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 sera effacé sans déconnecter l'utilisateur.

J'avais ce problème et j'essayais les deux, mais je devais me contenter de supprimer la merde telle que "pageEditState", mais je ne supprimais pas les informations utilisateur de peur que je ne doive le consulter à nouveau.

public static void RemoveEverythingButUserInfo()
{
    foreach (String o in HttpContext.Current.Session.Keys)
    {
        if (o != "UserInfoIDontWantToAskForAgain")
            keys.Add(o);
    }
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top