ASP.NET 5 不(也不会)正式支持自定义主体/身份。您可以找到有关此主题的更多信息:https ://github.com/aspnet/Security/issues/323 。
相反,强烈建议您将所需的数据存储为单独的声明,并在需要时提供扩展方法ClaimsIdentity
(ClaimsPrincipal
例如,如果您需要格式化声明值)。
FWIW,这种模式被 ASP.NET Identity 3 本身大量使用,它带有内置扩展(如GetUserName
or GetUserId
),您可以在自己的代码中使用:
/// <summary>
/// Returns the User ID claim value if present otherwise returns null.
/// </summary>
/// <param name="principal">The <see cref="ClaimsPrincipal"/> instance this method extends.</param>
/// <returns>The User ID claim value, or null if the claim is not present.</returns>
/// <remarks>The User ID claim is identified by <see cref="ClaimTypes.NameIdentifier"/>.</remarks>
public static string GetUserId(this ClaimsPrincipal principal)
{
if (principal == null)
{
throw new ArgumentNullException(nameof(principal));
}
return principal.FindFirstValue(ClaimTypes.NameIdentifier);
}
https://github.com/aspnet/Identity/blob/dev/src/Microsoft.AspNet.Identity/PrincipalExtensions.cs