如何获取经过身份验证的用户的电子邮件 ID?

How to get email Id of authenticated user?

我的 Azure Web 应用已通过 Microsoft 帐户登录验证。我通过 Azure 门户启用它并更改 authentication/authorization 网络设置 app.This 不需要对网络应用程序代码进行任何更改。身份验证部分工作正常。

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

我试着把 User.Identity 读成 System.Security.Claims.ClaimsPrincipal。但这是无效的。

如何访问经过身份验证的用户的电子邮件 ID?

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

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

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

代码结果:

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