2012-01-23 17 views
6

私のMVCアプリケーションでは、現在のログインユーザーが何人かのx人であれば、cshtmlファイルにテーブルをレンダリングします。私はWindows認証を使用しており、web.configファイルで以下の変更を行いました。Windows認証 - 現在のユーザー名を取得する

<authentication mode="Windows"> 
     </authentication> 

現在のユーザー名にアクセスしようとしているときに私のコントローラーにユーザー名が表示されません。私は次のことを試しています:

ViewBag.LogInUserName = Request.RequestContext.HttpContext.User.Identity.Name; 

これは以前の行です。しかし、私は今何が間違っているのか分からない。また、今私はIIS上で自分のアプリケーションをホストしています。

答えて

11

コントローラーに[Authorize]属性を設定する必要があります。

コントローラでUser.Identity.Nameを使用できます。

[Authorize] 
public class YourController : Controller 
{ 

    public ActionResult SomeAction() 
    { 
     var userName = User.Identity.Name; 
    } 
} 
+0

助けてくれてありがとう。私はそれをどのように達成できるかを示すことができますか? – Jash

+0

@ジャッシュ:私のアップデートを読んでください。 – jgauffin

+0

私はWebプロジェクトプロパティをAsp.Net開発サーバーを使用するように変更しました。そして、今私は現在のユーザー名のログを取得することができます。だから問題は私がIIS上で私のWebプロジェクトをホストしているときです。何か案が? – Jash

1

少し遅れていますが、これは将来他の人に役立つ可能性があります。

新しいIISサーバーにサイトを展開した後も同じ問題が発生し、匿名認証が有効になっていたため、匿名認証が無効になっていることを確認してください。

11

特に、Webプロジェクトのプロパティを見てみましょう:

  1. 匿名認証 - これらのデフォルトでは

を "有効" に設定 - を "無効"

  • Windows認証を設定しますおそらくあなたが探しているものの反対に設定されています。

    Web project properties

    (画像MSDNから供給)

  • 関連する問題