2011-02-16 22 views
0

我想爲非網絡請求設置身份。目前我正在使用FormsAuthentication,並通過此User.Identity.Name獲取用戶身份。現在我必須通過API讓用戶登錄。我有用戶的用戶名/密碼,我如何爲此設置身份。設置非網絡請求身份

回答

0

您需要創建您自己的IPrincipal和IIdentity實現,然後在通過身份驗證後將其分配給HttpContext.User。

1

在非網絡環境,標識設置的線程上,可以通過訪問:

Thread.CurrentPrincipal.Identity 

你可以用它來操縱身份或作爲瓦迪姆建議,完全符合自己的自定義覆蓋主要。

該代碼片段取自System.Web.Security.Membership類,該類可與web和非web環境中的主體配合使用,並分析兩者如何一起使用。

public static string GetCurrentUserName() 
{ 
    if (HostingEnvironment.IsHosted) 
    { 
     HttpContext current = HttpContext.Current; 
     if (current != null) 
     { 
      return current.User.Identity.Name; 
     } 
    } 
    IPrincipal currentPrincipal = Thread.CurrentPrincipal; 
    if ((currentPrincipal != null) && (currentPrincipal.Identity != null)) 
    { 
     return currentPrincipal.Identity.Name; 
    } 
    return string.Empty; 
}