2012-03-19 54 views
2

如何使用JQuery/javascript獲取ASP .NET MVC應用程序客戶端上的用戶名並將其發回服務器以供控制器處理?使用ASP.NET MVC在客戶端獲取用戶名

我想發生的事件的順序如下:

  1. 獲取客戶機的用戶名。
  2. 將用戶名發回服務器。
  3. 實例化在構造函數中接受用戶名的新對象。 (使用Ninject for DI)
  4. 將對象注入接收控制器。
+0

您的應用程序有任何形式的認證?如果是這樣,什麼樣的? (例如窗體,Windows) – Jacob 2012-03-19 23:58:05

+0

認證被認爲是在用戶登錄到Intranet時完成的(所以Windows身份驗證)。 – Seth 2012-03-20 00:11:13

回答

3

在客戶端的東西,你不應該有權限訪問用戶名。你也不需要它。在你的服務器端的代碼,你可以用這個代碼訪問Windows身份驗證的用戶名:

var username = HttpContext.Current.User.Identity.Name.ToString(); 
+0

所以當我說Windows身份驗證時,意思是當用戶使用Active Directory登錄到計算機上時。不在Web服務器上。服務器機器如何知道客戶機器用戶名?這些信息是否總是通過HttpContext對象發佈? – Seth 2012-03-20 00:50:14

+0

您必須爲您的網站啓用Windows身份驗證。如果您的用戶使用IE,則應該自動進行身份驗證。其他瀏覽器可能會要求他們重新提交用戶名和密碼。 – Jacob 2012-03-20 00:52:43

0

要建立在@Jacob答案的頂部,獲得服務器端控制器中的值填充視圖模型屬性與變量的這個值用戶名

var username = HttpContext.Current.User.Identity.Name.ToString(); 
vmUser.UserName = username; // Here vmUser is a sample ViewModel 

在CSHTML,如果用剃刀引擎使用隱藏變量,通過使用構建體中的一個下面

@Html.Hidden or 
    @Html.HiddenFor(um=>um.UserName) 

訪問它在Jquery的或JavaSc RIPT 希望這會增加對有助於在MVC和jQuery

0

要添加到這裏的討論新手,我們可以得到的用戶名進入一個javascript變量,如下所示:

<text>var jsUser = '@HttpContext.Current.User.Identity.Name.ToString()';</text>