将ASP.NET Identity与OWIN auth集成到Azure AD B2C时,User.Identity.Name为null
我正在扩展一个使用ASP.NET身份验证的现有MVC web应用程序。它使用将ASP.NET Identity与OWIN auth集成到Azure AD B2C时,User.Identity.Name为null,asp.net,asp.net-identity,claims-based-identity,azure-ad-b2c,Asp.net,Asp.net Identity,Claims Based Identity,Azure Ad B2c,我正在扩展一个使用ASP.NET身份验证的现有MVC web应用程序。它使用System.Web.HttpContext.Current.User.Identity.Name获取当前登录用户的用户名 当我使用示例代码切换到OWIN身份验证时,Name属性为null,导致现有应用程序抛出错误。是否可以更改IIdentity.Name的值而不使标识无效?如底部所述,您应该通过ClaimsPrincipal.Current对象访问用户声明,例如: // Controllers\HomeControll
System.Web.HttpContext.Current.User.Identity.Name
获取当前登录用户的用户名
当我使用示例代码切换到OWIN身份验证时,
Name
属性为null,导致现有应用程序抛出错误。是否可以更改IIdentity.Name
的值而不使标识无效?如底部所述,您应该通过ClaimsPrincipal.Current
对象访问用户声明,例如:
// Controllers\HomeController.cs
[Authorize]
public ActionResult Claims()
{
Claim displayName = ClaimsPrincipal.Current.FindFirst(ClaimsPrincipal.Current.Identities.First().NameClaimType);
ViewBag.DisplayName = displayName != null ? displayName.Value : string.Empty;
return View();
}
不确定,但如果您在应用程序声明中返回
显示名称
,则它将不再是空
:)它将不再是用户名
,尽管与您以前的情况相同。System.Security.claims.ClaimsPrincipal.Current