我正在使用 MVC 5,我可以使用 Google 成功登录。
我想在登录过程后访问用户的外部身份声明。例如,我想在视图中访问用户的声明“图片”。但是,如果我尝试运行此代码,它总是返回 null。 (登录过程中除外 - 自动生成 mvc 模板代码)
有没有办法让我访问external身份主张? (登录过程之后)
我发现了身份是如何创建的。基本上是ExternalSignInAsync
拨打内部电话SignInAsync
这会调用CreateUserIdentityAsync
.
我找到了一个班级ApplicationSignInManager
in the IdentityConfig
文件,然后我改变了CreateUserIdentityAsync
方法:
public override async Task<ClaimsIdentity> CreateUserIdentityAsync(ApplicationUser user)
{
var externalIdentity = await AuthenticationManager.GetExternalIdentityAsync(DefaultAuthenticationTypes.ExternalCookie);
var localIdentity = await user.GenerateUserIdentityAsync((ApplicationUserManager)UserManager);
foreach (var item in externalIdentity.Claims)
{
if (!localIdentity.HasClaim(o => o.Type == item.Type))
localIdentity.AddClaim(item);
}
return localIdentity;
}
因此,每次登录时,我都会在登录用户中获得我的声明+外部声明。从一个角度我可以调用:
@HttpContext.Current.GetOwinContext()
.Authentication.User.FindFirst("urn:google:picture").Value
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)