【问题标题】:How to get email Id of authenticated user?如何获取经过身份验证的用户的电子邮件 ID?
【发布时间】:2019-06-21 02:23:14
【问题描述】:

我的 Azure Web 应用已通过 Microsoft 帐户登录进行身份验证。我通过 Azure 门户启用了它,更改了 Web 应用程序的身份验证/授权设置。这不需要对 Web 应用程序代码进行任何更改。身份验证部分工作正常。

现在我想要在访问网络应用程序之前获得身份验证的用户的电子邮件 ID。

我试图将User.Identity 读作System.Security.Claims.ClaimsPrincipal。但这将是空的。

如何获取认证用户的邮箱?

【问题讨论】:

    标签: azure azure-web-app-service azure-webapps


    【解决方案1】:

    转到您的 web 应用并单击 Authentication / Authorization。在身份验证提供程序下,单击 Microsoft Account。点击wl.basic & wl.emails 启用它们。

    然后转到ExternalLoginCallback并添加以下代码:

    var identity = await AuthenticationManager.AuthenticateAsync(DefaultAuthenticationTypes.ExternalCookie);
    var emailClaim = identity.Identity.FindFirst(ClaimTypes.Email);
    var email = emailClaim.Value;
    

    代码结果:

    【讨论】:

    • 感谢您的回复。这个 ExternalLoginCallback 方法在哪里?
    • 在 AccountController 中。
    • 我创建了一个asp.net信号页面应用程序。
    • 我的网络应用是一个旧的解决方案,在创建时选择了“无身份验证”。现在我必须实现 Microsoft 身份验证。我添加了所有必需的 nuget 包。在我的情况下,loginInfo 仍然为空。请提出建议。
    【解决方案2】:

    我现在能够获得经过身份验证的用户电子邮件,即使我的 asp.net mvc 应用程序最初是“无身份验证”应用程序。我从 Azure 门户为我的 Web 应用启用了 MS 身份验证。现在我从 System.Security.Claims.ClaimsPrincipal.Current.Claims 对象获取用户电子邮件。它由 MS 身份验证流程自动设置。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-06-25
      • 2012-04-16
      • 2016-02-04
      • 1970-01-01
      • 2019-05-01
      • 1970-01-01
      • 2017-05-12
      相关资源
      最近更新 更多