2011-02-16 21 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; 
}