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