我想为非网络请求设置标识。目前我正在使用FormsAuthentication,我通过此 User.Identity.Name 获取用户身份。现在我必须让用户通过API登录。我有用户的用户名/密码,我该如何为此设置身份。
答案 0 :(得分:1)
在非Web环境中,标识在线程上设置,可以通过以下方式访问:
Thread.CurrentPrincipal.Identity
您可以使用它来操纵身份,或者像Vadim建议的那样,使用您自己的自定义主体完全覆盖。
此代码段摘自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;
}
答案 1 :(得分:0)
您需要创建自己的IPrincipal和IIdentity实现,然后在经过身份验证后将其分配给HttpContext.User。