3

なぜHttpContext.User.Identity.Name空白を返すのかを理解しようとしています。

コード

public ActionResult Test()
{
    string username = HttpContext.User.Identity.Name;
    return Content(username);         
}

これを間違ったコンテキストで使用していますか? ユーザーのユーザー名を取得しようとしています。

Web.Config

<authentication mode="Windows" />

IIS

匿名を有効にしましたが、他に何もチェックされていません。IIS 6.0 を実行しています。

これを理解するために追加する必要がある情報はありますか? 私はかなり立ち往生しています。この質問を確認しましたが、これを機能させるために Cookie を設定する必要がありますか?

4

4 に答える 4

3

匿名を有効にしましたが、他に何もチェックされていません。IIS6.0を実行しています。

これは、ログインを求めるプロンプトが表示されないため、User.Identity.IsAuthenticatedfalseにUser.Identity.Nameなり、空白になることを意味します。

匿名認証のチェックを外し、Windows認証をチェックします。

于 2012-12-18T18:33:33.680 に答える
3

IsAuthenticated が false を返すため、そのアクションに認証が必要ないため、Identity.Name は空の文字列を返します。Windows 認証を有効にし、アクションの認証を要求する必要があります。[Authorize]認証ネゴシエーションを開始する属性で装飾することにより、ユーザーがアクションに対して承認されることを要求してみてください。

[Authorize]
public ActionResult Test()
{
    if(Request.IsAuthenticated)
    {
        string username = HttpContext.User.Identity.Name;
        return Content(username);         
    }
    else 
    {
        return Content("User is not authenticated");
    }
}
于 2012-12-18T18:35:55.620 に答える