【问题标题】:Get claim email address获取索赔电子邮件地址
【发布时间】:2021-12-16 12:05:57
【问题描述】:

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

我尝试访问为:

var email = User.Identity.GetClaimsByType("emailaddress").ToString();
var email = User.Identity.GetClaimsByType("email").ToString();
var email = User.Identity.GetClaimsByType("Email").ToString();

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

声明是:

{http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress: MyemailAdrress@mail.com}

【问题讨论】:

    标签: c# asp.net-web-api asp.net-identity


    【解决方案1】:

    C# 提供了一个Claim Types Enum 来表示声明类型的url。代码如下所示:

      var email = User.Identity.GetClaimsByType(ClaimTypes.Email).Select(x => x.Value).FirstOrDefault().ToString();
    

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

    var claimValue = User.Identity.Claims.FirstOrDefault(claim => claim.Type.Contains(<my custom claim type>));
    

    【讨论】:

    • 所以使用它与使用类似:"http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress"?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多