ASP.Net: Si j'ai l'ID de Session, puis-je obtenir l'objet de Session?
Cette question est liée à cette une, mais je pense que j'ai été un peu trop longue haleine, il y à vraiment obtenir une bonne réponse. Je vais garder ce court.
Je travaille sur un site web handler (ashx) qui accepte un post de formulaire à partir d'une page aspx. Lorsque le gestionnaire reçoit ce post de formulaire, afin de faire ce qu'il doit faire, il faut connaître l'utilisateur qui est connecté (de l'Utilisateur.L'identité.Nom), mais je ne peux pas compter sur les cookies envoyés par le navigateur.
Je sais que je peux obtenir de la Session.Id de session et de le placer dans un champ de formulaire masqué, mais une fois que mon gestionnaire reçoit le post de formulaire, comment puis-je l'utiliser SessionID à la figure de l'utilisateur connecté identité?
Je suis en utilisant le mode StateServer pour l'état de session.
OriginalL'auteur Josh Hinman | 2008-09-11
Vous devez vous connecter pour publier un commentaire.
Je pense que vous pouvez le faire à la mise en œuvre du IReadOnlySessionState interface sur votre HttpHandler
OriginalL'auteur lomaxx
Jonas posté une grande réponse à cette question ici:
Puis-je mettre un ASP.Net ID de session dans un champ de formulaire masqué?
Trouvé le lien sur la Wayback Machine
OriginalL'auteur Josh Hinman
Sauf s'il est nécessaire d'utiliser de session directement, vous pouvez toujours stocker toutes les informations concernant l'utilisateur connecté de l'identité dans un singleton dictionnaire ou de cache et de référence via le SessionID stockées dans un champ caché. Personnellement, je vois les questions de sécurité, mais ce n'entrerai pas dans ces. Je voudrais examiner la possibilité d'émettre à usage unique identités pour ce type de mise en œuvre.
SQL server serait votre meilleur pari. Si vous utilisez le serveur d'état pour ce déjà fait, ce serait une sanction similaire. Ou vous pouvez écrire votre propre service WCF qui permettrait de gérer cet échange. Il peut travailler comme IDENTIFIANT unique du courtier ainsi que l'identité de stockage. Ou même utiliser un SQL point de terminaison de service.
OriginalL'auteur Adam Carr
Dans un HttpHandler ou HttpModule mise en œuvre, vous ne pouvez pas toujours à la session d'accès à l'événement BeginRequest. Il y a un autre événement, vous pouvez gérer, appelé OnAcquireRequestState. Si vous écrivez votre code dans l'événement, puis HttpContext.Actuel.Session ne sera pas nulle.
OriginalL'auteur Ben Scheirman