2010-06-29 4 views
2

J'essaie de vérifier si l'utilisateur appartient à la liste d'amis de quelqu'un de la base de données et de le rediriger en conséquence. Je le fais dans un routeur appelé Global Asax.Comment obtenir un nom d'utilisateur dans asax?

Je veux juste savoir comment obtenir le nom d'utilisateur (à partir des informations de connexion) dans la classe de gestionnaire d'itinéraire (ou asax Global)

je ceci:

string username = HttpContext.Current.User.Identity.Name; 

et très étrangement, sa assignant ".aspx" comme nom d'utilisateur !! Ps: J'ai cherché une question similaire mais en vain. désolé si je le cherche bien.

+0

Quelle méthode d'authentification utilisez-vous? AFAIK l'utilisateur est défini par un AuthenticationModule et le comportement peut varier en fonction de la méthode d'authentification que vous utilisez. –

Répondre

4

Cela devrait fonctionner ... doit être quelque chose dans votre méthode d'authentification.

Comment l'avez-vous configuré?

On dirait que vous faites vous-même l'authentification et l'attribution de l'identité du mauvais serveur variables

2

Vérifiez votre fichier web.config et recherchez la section et assurez-vous que le mode d'authentification est défini sur Windows, comme celui-ci :

<authentication mode="Windows"></authentication> 
3

global.asax Session_Start est appelée lorsqu'une session est démarrée, c'est-à-dire lorsqu'un navigateur rencontre votre site. L'utilisateur du navigateur ne s'est généralement pas connecté à ce moment-là, il n'y aura donc pas de HttpContext.Current.User.Identity.Name à saisir. Vous devriez obtenir une chaîne vide. Une exception serait que l'utilisateur soit déjà authentifié et que la session ait été relancée pour une raison quelconque, par exemple si vous avez renvoyé le serveur ou si le délai d'expiration de la session était plus court que le délai d'expiration de votre authentification. Mais dans le cas général, la séquence doit être:

  1. session commence
  2. utilisateur se connecte et HttpContext.Current.User.Identity.Name devient disponible

Donc, la réponse à votre question est : "dans le cas général, vous ne pouvez pas".

Questions connexes