获取索赔电子邮件地址

Jes*_*sus 2 c# asp.net-web-api asp.net-identity

我想通过Claim内部访问我的电子邮件地址Identity

我尝试访问为:

var email = User.Identity.GetClaimsByType("emailaddress").ToString();
var email = User.Identity.GetClaimsByType("email").ToString();
var email = User.Identity.GetClaimsByType("Email").ToString();
Run Code Online (Sandbox Code Playgroud)

但这些都不起作用,它总是返回null,我怎样才能得到它?

索赔要求是:

{http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress: MyemailAdrress@mail.com}
Run Code Online (Sandbox Code Playgroud)

Nat*_*oss 5

C# 提供了一个声明类型枚举来表示声明类型 url。代码如下所示:

var email = User.Identity.GetClaimsByType(ClaimTypes.Email)
    .Select(x => x.Value).FirstOrDefault().ToString();
Run Code Online (Sandbox Code Playgroud)

如果您支持身份中的自定义声明类型,则可以使用 LINQ。

var claimValue = User.Identity.Claims
    .FirstOrDefault(claim => claim.Type.Contains(<my custom claim type>));
Run Code Online (Sandbox Code Playgroud)