2012-01-23 64 views
6

在我的MVC應用我想呈現一個表中CSHTML文件,如果當前登錄用戶是一些X人。我正在使用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

@Jash:閱讀我的更新。 – jgauffin

+0

我剛剛更改我的web項目屬性以使用Asp.Net開發服務器。現在我可以檢索當前登錄用戶名。所以問題是當我在IIS上託管我的Web項目。任何想法? – Jash

1

稍遲一點,但這可能會在未來爲其他人服務。

我部署我的網站到一個新的IIS服務器後有同樣的問題一次,並啓用了匿名身份驗證,因此請確保匿名身份驗證是禁用的,它應該工作。

11

看看Web項目的屬性,特別是:

  1. 匿名身份驗證 - 設置爲 「已禁用」
  2. Windows身份驗證 - 設置爲 「Enabled」

默認情況下,這些被設置爲與你可能要查找的內容相反。

Web project properties

(圖片來自MSDN來源)

相關問題