C# 用于存储化身URI的ClaimType

C# 用于存储化身URI的ClaimType,c#,asp.net-identity,asp.net-core,claims-based-identity,C#,Asp.net Identity,Asp.net Core,Claims Based Identity,我在应用程序中使用Facebook/Google身份验证,一旦通过身份验证,我就创建自己的cookie 什么ClaimType适用于存储用户的化身URI?如果无法找到匹配项,则不需要坚持使用ClaimTypes枚举,因为支持字符串 使用字符串是完全有效的: var identity = new ClaimsIdentity(CookieAuthenticationDefaults.AuthenticationScheme); identity.AddClaim(new Claim("Gravat

我在应用程序中使用Facebook/Google身份验证,一旦通过身份验证,我就创建自己的cookie


什么
ClaimType
适用于存储用户的化身URI?

如果无法找到匹配项,则不需要坚持使用
ClaimTypes
枚举,因为支持字符串

使用字符串是完全有效的:

var identity = new ClaimsIdentity(CookieAuthenticationDefaults.AuthenticationScheme);
identity.AddClaim(new Claim("Gravatar", user.GravatarLink));
要收回索赔,请执行以下操作:

var gravatar = HttpContext.User.Claims
                  .Where(c => c.Type == "Gravatar")
                  .Select(c => c.Value).FirstOrDefault();
明显的缺点是,这是一个“神奇”字符串,可能会在运行时输入错误并中断。如果您确实希望为这些额外类型创建强类型,请创建自己的静态类型,以提供自定义声明:

public static class MyClaimTypes 
{
    public static string Gravatar = "Gravatar";
    public static string FullName = "FullName";
}

这确保了您可以使用强类型而不是神奇的字符串。现在,您可以在代码中用
MyClaimTypes.Gravatar
替换
“Gravatar”
字符串。

如果无法找到匹配项,则无需使用
ClaimTypes
枚举,因为支持字符串

使用字符串是完全有效的:

var identity = new ClaimsIdentity(CookieAuthenticationDefaults.AuthenticationScheme);
identity.AddClaim(new Claim("Gravatar", user.GravatarLink));
要收回索赔,请执行以下操作:

var gravatar = HttpContext.User.Claims
                  .Where(c => c.Type == "Gravatar")
                  .Select(c => c.Value).FirstOrDefault();
明显的缺点是,这是一个“神奇”字符串,可能会在运行时输入错误并中断。如果您确实希望为这些额外类型创建强类型,请创建自己的静态类型,以提供自定义声明:

public static class MyClaimTypes 
{
    public static string Gravatar = "Gravatar";
    public static string FullName = "FullName";
}
这确保了您可以使用强类型而不是神奇的字符串。现在,您可以将代码中的
“Gravatar”
字符串替换为
MyClaimTypes.Gravatar