web-dev-qa-db-ja.com

HttpContext.Current.User.Identity.Nameが空白を返す

Webアプリケーションが使用されているときに、HttpContext.Current.User.Identity.Nameを使用してユーザー名を取得しています。開発中、ローカルのIISを使用していました。統合Windows認証を有効にし、匿名アクセスを有効または無効にして、ユーザー名を取得することができました。

これで、Webアプリケーションを公開すると、空白に戻ります。公開サーバーでの設定は同じで、Page.User.Identity.Nameを使用してみましたが、これも空白を返しました。

これがなぜであるか、そしてそれを修正する方法を誰かが知っていますか?

12
Andy5

おそらく、Windows認証だけでなく匿名認証も持っていました。匿名をオフにします。

そう、

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

IISアプリの構成で、[認証]タブを確認します

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

これが機能し、Identity.UserNameが正しく表示されます。

14
Thing

この問題を解決するには、Windows認証機能を有効にする必要があります。以下の手順に従ってください:

-[スタート]をクリックし、[コントロールパネル]をクリックします。プログラムグループを開きます。
-[プログラム]と[機能]で、[Windowsの機能の有効化または無効化]をクリックします。
-「インターネットインフォメーションサービス」という項目を展開します。
-「World Wide Webサービス」というラベルの付いたアイテムを展開します。 -アイテムのセキュリティを展開します->
必ず選択してくださいWindows Authentication

また、次のようにIISから匿名認証を無効にする必要があります。-IISでアプリケーションをクリックします-IISグループ-匿名認証をクリック-アクションの下の右側にある無効化をクリックします。

3
A Ghazal

HttpContext.Current.Request.LogonUserIdentity.NameはVS 2012環境で常に機能し、IIS 7

3
Tony Dong

web.configファイルで_<authentication mode="Forms">_を設定すると、問題が解決します。

以下のコードを使用してWebサイトをテストします

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

1
Pankil Agrawal

これは元の投稿を解決しませんが、user.identityが何も返さない理由を検索するときに他の人がこれに遭遇した場合に備えて、とにかくここに配置したいと思います...

私の場合、ユーザーの広告ユーザー名(特にWindows 2000以前のユーザー名)を更新した後、User.Identityが何も返さなくなりました。

IISのLSAキャッシュが問題でした。IISサーバーを再起動した後も、問題のトラブルシューティングが続いています。ここで説明されているレジストリ設定を追加するまでは、この問題は修正されました:

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

1
Mike

空白のリターンの場合、私の解決策はweb.configになりました。 Visual Studio 2010を使用していますが、デフォルトのweb.configが機能しませんでした。私はそれをほぼ空のweb.configに置き換えて成功しました!おそらく、デフォルトのvs2010 web.configが参照を多すぎるか、IISをUser.Identity.Nameの使用に対して誤って構成しました。私のシステムはWindows7です。

Vs2010のデフォルトのasp.net Webサイトweb.configは、約100〜115行でした。以下に示すように、ほぼ空のweb.configは約20行です。


私が使用したweb.config:

<?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

WIFを使用する場合は、User.Identity.NameではなくThread.CurrentPrincipal.Identity.Nameを使用する必要があります。

詳細はこちら: http://msdn.Microsoft.com/en-us/magazine/ff872350.aspx Windows Identity Foundationの詳細

同様の質問: WIFによる認証後、User.Identity.Nameはnullです

0
Kacper Ryniec