4

Windows認証を使用してユーザーのログイン名を確認したい。私はこれをコントローラーのコンストラクターとして持っています:

public class HomeController : BaseController
{
    public string UserIdentityName;

    public HomeController()
    {
        UserIdentityName = System.Web.HttpContext.Current.User.Identity.Name;// HttpContext.Current.User.Identity.Name;
    }
}

しかし、UserIdentityNameは空の文字列を返します...

私のweb.configにもこれがあります:

<authentication mode="Windows" />   

何か案が?

4

4 に答える 4

12

ソリューション エクスプローラー ペインで Web プロジェクトを選択し、 F4 を押します。(右クリック+プロパティではありません、それは異なります)

プロパティ ペイン セット:
Windows 認証:
匿名認証を有効にする: 無効

Web.config で:<authentication mode="Windows"></authentication>

ユーザー名を取得するには:

HttpContext.Current.User.Identity.Name OR User.Identity.Name

プロジェクトを実行してください、Happy Days!

于 2013-01-15T11:57:57.930 に答える
5

コントローラのコンストラクタでHttpContext関連のものにアクセスしようとしないでください。アクセスする必要がある最初の段階は、Initializeメソッドまたはコントローラーアクション内です。

例えば:

[Authorize]
public ActionResult Index()
{
    string user = User.Identity.Name;
    ...
}

また、WebサーバーでWindows認証(NTLM)が有効になっていることを確認してください。

于 2012-09-23T14:02:23.127 に答える
2

チャップス、

IISExpress で実行している場合。次のように次の設定を確認します。

web.config 内

<authentication mode="Windows"/>
<authorization>
  <deny users="?"/>
</authorization>   

projectName.csproj をメモ帳で開き、次の設定を修正します。

<IISExpressAnonymousAuthentication>disabled</IISExpressAnonymousAuthentication>
<IISExpressWindowsAuthentication>enabled</IISExpressWindowsAuthentication>

<UseIIS>True</UseIIS>
于 2013-12-09T13:11:19.987 に答える
1

追加してみてください:

<authorization>
  <deny users="?" />
</authorization>

匿名ユーザーへのアクセスを拒否します。

于 2012-09-23T14:03:32.907 に答える