【问题标题】:Getting null value in attempt to read Claims from Identity获取空值以尝试从身份读取声明
【发布时间】:2018-02-07 17:09:23
【问题描述】:

我正在开发一个 .NET Core 应用程序、Web Api 并集成 Azure B2C 身份验证。现在我需要阅读声明,出于某种原因,即使我可以看到堆栈中的值期望标识对象值正在工作,但由于某种原因我得到了 null,但不确定我从谜题中遗漏了什么

这是有效的:

 var userId = identity?.Claims.SingleOrDefault(claim => claim.Type == "http://schemas.microsoft.com/identity/claims/objectidentifier")?.Value;

以下不起作用并返回 null:

var UserId = listedUserGuid;
var Email = identity?.Claims.SingleOrDefault(claim => claim.Type == "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress")?.Value;
var  Name = identity?.Claims.SingleOrDefault(claim => claim.Type == ClaimTypes.Name).Value;
var Surname = identity?.Claims.SingleOrDefault(claim => claim.Type == ClaimTypes.Surname).Value;

【问题讨论】:

    标签: azure asp.net-web-api2 claims-based-identity .net-core-2.0


    【解决方案1】:

    在 ASP.NET Core 2.0 中还可以使用便捷方法FindFirst

    User.FindFirst("email");
    

    因此您甚至不必担心身份属性。

    【讨论】:

      【解决方案2】:

      找到答案;

                     var UserId = listedUserGuid;
                     var Email = identity?.Claims.SingleOrDefault(claim => claim.Type == "emails")?.Value;
                     var  Name = identity?.Claims.SingleOrDefault(claim => claim.Type == "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/givenname")?.Value;
                     var Surname = identity?.Claims.SingleOrDefault(claim => claim.Type == "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/surname")?.Value;
      

      【讨论】:

        猜你喜欢
        • 2019-06-17
        • 2021-10-26
        • 1970-01-01
        • 1970-01-01
        • 2020-04-24
        • 2016-04-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多