web-dev-qa-db-fra.com

HttpContext.Current.User.Identity.Name renvoie un blanc

J'utilise HttpContext.Current.User.Identity.Name pour obtenir le nom d'utilisateur lorsque l'application Web est en cours d'utilisation. Pendant le développement, j'utilisais mes iis locaux, avec l'authentification intégrée de Windows activée et l'accès anonyme activé et désactivé, et j'ai pu obtenir le nom d'utilisateur.

Maintenant, lorsque je publie l'application Web, elle revient vide. La configuration sur le serveur publié est la même et j'ai essayé d'utiliser Page.User.Identity.Name, qui a également renvoyé vide.

Est-ce que quelqu'un sait pourquoi et comment y remédier?

8
Andy5

Vous avez probablement eu l'authentification anonyme ainsi que l'authentification Windows. Désactiver Anonymous off.

Alors,

<system.web>
    <authentication mode="Windows" />
</system.web>

Dans IIS config pour l'application, regardez dans l'onglet Authentification.

Set **Anonymous Authentication** to **Disabled** and
Set **Windows Authentication** to **Enabled**

Cela devrait fonctionner et Identity.UserName devrait maintenant s'afficher correctement.

12
Thing

Pour résoudre le problème, vous devez activer la fonctionnalité d’authentification Windows. Suivez les étapes ci-dessous:

Cliquez sur Démarrer, puis sur Panneau de configuration. Ouvrez le groupe Programmes.
- Sous Programmes et fonctionnalités, cliquez sur Activer ou désactiver des fonctionnalités Windows.
- Développez l'élément intitulé Internet Information Services.
- Développez l'élément intitulé Services World Wide Web. -Agrandir l'article Sécurité ->
Assurez-vous de sélectionner Authentification Windows

Vous devez également désactiver l'authentification anonyme à partir de IIS comme suit: -Cliquez sur votre application dans IIS -Cliquez deux fois sur Authentification sous le groupe IIS -Cliquez sur Authentification anonyme. -Cliquez sur Désactiver à droite sous Actions. J'espère que cela t'aides

3
A Ghazal

HttpContext.Current.Request.LogonUserIdentity.Name fonctionne toujours pour moi dans l'environnement VS 2012 et IIS 7

3
Tony Dong

définissez <authentication mode="Forms"> dans le fichier web.config et votre problème sera résolu.

Testez votre site Web en utilisant le code ci-dessous

if (Page.User.Identity.Name != "" ) { Label1.Text = "Hello"; } else { Response.Redirect("login.aspx?url=Upload.aspx"); }

0
Pankil Agrawal

Cela ne résoudra pas le message original, mais vous voudrez bien le mettre ici au cas où d’autres tomberaient sur cela en cherchant la raison pour laquelle user.identity ne retournait rien ...

Dans mon cas, User.Identity a commencé à ne rien renvoyer après la mise à jour du nom d'utilisateur d'une annonce d'utilisateurs (en particulier le nom d'utilisateur antérieur à Windows 2000).

Le problème était le cache LSA sur IIS. Même après le redémarrage du serveur IIS lors de la résolution du problème, le problème persiste. Ce n'est qu'après avoir ajouté le paramètre de registre décrit ici que le problème a été résolu:

https://support.Microsoft.com/en-us/help/946358/the-lsalookupsids-function-may-return-the-old-user-name-instead-of-the

0
Mike

Pour une déclaration en blanc, ma solution a été la solution web.config. J'utilise Visual Studio 2010 et le fichier web.config par défaut ne fonctionnait pas. Je l'ai remplacé par un web.config presque vide, puis par le succès! Peut-être que le fichier web.config vs2010 par défaut a appelé trop de références ou configuré de manière incorrecte le IIS pour l'utilisation de User.Identity.Name. Mon système est Windows7.

Le site Web par défaut asp.net web.config de vs2010 comptait environ 100 à 115 lignes. Comme vous pouvez le voir ci-dessous, le fichier web.config, presque vide, compte environ 20 lignes.


le web.config que j'ai utilisé:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>

  <system.web>
   <authentication mode="Windows" />
   <authorization>
      <allow roles="Doman Name\Group Name" users="" />
      <deny users="*" />
   </authorization>

  </system.web>

  <system.webServer>
    <modules runAllManagedModulesForAllRequests="true" />
        <security>
            <authorization>
                <add accessType="Allow" users="" roles="Doman Name\Group Name" />
            </authorization>
        </security>
  </system.webServer>

</configuration>
0
Liem

Lorsque vous travaillez avec WIF, vous devez utiliser Thread.CurrentPrincipal.Identity.Name au lieu de User.Identity.Name.

Lisez plus ici: http://msdn.Microsoft.com/en-us/magazine/ff872350.aspx pour en savoir plus sur Windows Identity Foundation

Question similaire: User.Identity.Name est null après authentification via WIF

0
Kacper Ryniec