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?
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 .
pour l'authentification windows
sélectionnez votre projet.
Appuyez Sur La Touche F4
désactiver "authentification anonyme" et activer" authentification Windows "
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é.
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.
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 ).
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).
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.