我的 Azure Web 应用程序通过 Microsoft 帐户登录进行身份验证。我通过 Azure 门户启用了它,更改了 Web 应用程序的身份验证/授权设置。这不需要对 Web 应用程序代码进行任何更改。身份验证部分工作正常。
现在我想要在访问 Web 应用程序之前获得身份验证的用户的电子邮件 ID。
我试着读User.Identity
为System.Security.Claims.ClaimsPrincipal
. 但这将是空的。
如何访问经过身份验证的用户的电子邮件 ID?
我的 Azure Web 应用程序通过 Microsoft 帐户登录进行身份验证。我通过 Azure 门户启用了它,更改了 Web 应用程序的身份验证/授权设置。这不需要对 Web 应用程序代码进行任何更改。身份验证部分工作正常。
现在我想要在访问 Web 应用程序之前获得身份验证的用户的电子邮件 ID。
我试着读User.Identity
为System.Security.Claims.ClaimsPrincipal
. 但这将是空的。
如何访问经过身份验证的用户的电子邮件 ID?
转到您的 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;
我现在能够获得经过身份验证的用户电子邮件,即使我的 asp.net mvc 应用程序最初是“无身份验证”应用程序。我从 Azure 门户为我的 Web 应用启用了 MS 身份验证。现在我从 System.Security.Claims.ClaimsPrincipal.Current.Claims 对象获取用户电子邮件。它由 MS 身份验证流程自动设置。