Asp.net-Mvc-3

如何從控制器外部訪問已登錄的使用者?

  • September 18, 2011

我正在使用 SignalR 在我的 MVC3 應用程序上處理來自客戶端的點擊。

每次使用者點擊某些內容時,我都需要驗證登錄使用者。

如果這是在 MVC3 控制器中,我會去:

if (User.Identity.IsAuthenticated)
{
   string username = User.Identity.Name;

   //My code here.
}

但是,此程式碼執行不在 Controller 類中。

基本上,我如何從控制器外部訪問登錄的使用者名?

基本上,我如何從控制器外部訪問登錄的使用者名?

這取決於您要從哪裡訪問它們。如果您無權訪問 an ,HttpContext您可以隨時嘗試 anHttpContext.Current.User並祈禱它不會因某種原因為空,例如不同的執行緒或其他東西。這對於依賴於任務和大量非同步處理的 SignalR 來說尤其可能。如果它在 SignalR 的集線器內,您可以訪問使用者:

public class Chat: Hub
{
   public void Foo()
   {
       string username = Context.User.Identity.Name;
   }
}

就個人而言,我不建議您使用HttpContext.Current. 取決於您到底想達到什麼目標,以及我向您保證有更好的方法。

引用自:https://stackoverflow.com/questions/7289724