Comment HttpContext.Courant.Utilisateur.Identité.Nom vous savez quels noms d'utilisateur existent?

Ce n'est pas nécessairement un problème, je suis juste curieux de savoir comment il fonctionne. J'ai une méthode:

public static bool UserIsAuthenticated()
{
    bool isAuthed = false;
    try
    {
        if (HttpContext.Current.User.Identity.Name != null)
        {
            if (HttpContext.Current.User.Identity.Name.Length != 0)
            {
                FormsIdentity id = (FormsIdentity)HttpContext.Current.User.Identity;
                FormsAuthenticationTicket ticket = id.Ticket;
                isAuthed = true;
                string MyUserData = ticket.UserData;
            }
        }
    }
    catch { } // not authed
    return isAuthed;
}

le HttpContext.Current.User.Identity.Name retourne null si l'utilisateur n'existe pas, mais comment sait-il Quels noms d'utilisateurs existent ou n'existent pas?

26
demandé sur Pharap 2014-01-14 19:43:54

6 réponses

The HttpContext.Courant.Utilisateur.Identité.Nom renvoie null

cela dépend si le mode d'authentification est défini à formulaires ou Windows dans votre web.fichier de configuration.

Par exemple, si j'écris l'authentification comme ceci:

<authentication mode="Forms"/>

alors parce que le mode d'authentification= "Forms", j'obtiendrai null pour le utilisateur. Mais si je change le mode d'authentification en Windows comme ceci:

<authentication mode="Windows"/>

je peux lancer l'application à nouveau et vérifier le nom d'utilisateur, et je vais obtenir le nom d'utilisateur avec succès.

pour en savoir plus, lisez système.Web.HttpContext.Courant.Utilisateur.Identité.Nom Vs Système.Environnement.Nom d'utilisateur ASP.NET .

18
répondu Anurag Jain 2018-02-01 21:41:50

pour l'authentification windows

sélectionnez votre projet.

Appuyez Sur La Touche F4

désactiver "authentification anonyme" et activer" authentification Windows "

enter image description here

48
répondu Anwar Ul Haq 2015-01-20 09:31:54

vérifier aussi que

<modules>
      <remove name="FormsAuthentication"/>
</modules>

si vous avez trouvé quelque chose comme ceci juste supprimer:

<remove name="FormsAuthentication"/>

ligne de web.config et ici vous allez, il fonctionnera très bien je l'ai testé.

2
répondu Marconi Mac 2015-12-29 10:31:50

suppose un environnement réseau où un" utilisateur " (Alias vous) doit se connecter. Habituellement, il s'agit d'un ID utilisateur (UID) et D'un mot de passe (PW). OK alors, quelle est votre identité, ou qui êtes-vous? Vous êtes L'UID, et cela Glane ce "nom" de votre session de connexion. Simple! Il devrait également fonctionner dans une application internet qui a besoin de vous pour vous connecter, comme Best Buy et d'autres.

cela va retirer mon UID, ou "nom", de ma session lorsque j'ouvre la page par défaut de l'application web dont j'ai besoin pour utiliser. Maintenant, dans mon exemple, je suis partie d'un Domaine, donc je ne peux utiliser l'authentification Windows, et il a besoin de vérifier qui je suis, donc la 2ème partie du code. En ce qui concerne L'authentification des formulaires, elle dépend du ticket (alias cookie très probablement) envoyé à votre poste de travail/ordinateur. Et le code ressemblerait à:

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

// Strip the domain off of the result
id = id.Substring(id.LastIndexOf(@"\", StringComparison.InvariantCulture) + 1);

maintenant il a mon nom d'entreprise (alias UID) et peut l'afficher sur l'écran.

2
répondu CRH 2018-02-02 14:37:32

Comment est-ce que [HttpContext.Actuel.Utilisateur] savoir quels noms d'utilisateurs existent ou font n'existent pas?

regardons un exemple d'une façon dont cela fonctionne. Supposons que vous utilisiez L'authentification de formulaires et les feux d'événement "OnAuthenticate". Cet événement se produit " lorsque l'application authentifie la requête actuelle " ( Source De Référence ).

jusqu'à ce point, la demande n'a aucune idée de qui vous êtes.

puisque vous utilisez L'authentification Forms, il vérifie d'abord en analysant le cookie d'authentification (habituellement .ASPAUTH ) via un appel à ExtractTicketFromCookie . Cela s'appelle FormsAuthentication.Decrypt (cette méthode est publique; vous pouvez l'appeler vous-même!). Ensuite, il appelle Context.SetPrincipalNoDemand , transformant le cookie en un utilisateur et le bourrant en Context.User ( source de référence ).

0
répondu Brian 2018-03-12 18:43:02

juste pour ajouter, si vous utilisez ASP.Net Core 2, Assurez-vous que vous avez les paramètres corrects dans les lancements " .JSON " fichier (sous le dossier Propriétés).

enter image description here

ridiculement, ces paramètres semblent outrepasser les paramètres réels que vous avez définis dans IIS, donc si " windowsAuthentication "est défini à false ici, User.Identity.Name retournera null.

0
répondu Mike Gledhill 2018-09-04 07:52:53