我在我的MVC5网站上实施了Facebook和Twitter登录,一切运作良好。
我想做什么似乎引用简单,但我不知道该怎么做。
我可以使用以下命令获取登录用户的用户名:
System.Web.HttpContext.Current.User.Identity.Name
但是,我想知道该用户是使用Facebook或Twitter登录还是来自相关社交网络的ProviderKey。
希望这很容易做到
感谢。
答案 0 :(得分:0)
您可以使用以下方法获取所有外部登录信息。
private ApplicationUserManager _userManager;
public ApplicationUserManager UserManager
{
get
{
return _userManager ?? HttpContext.GetOwinContext().GetUserManager<ApplicationUserManager>();
}
private set
{
_userManager = value;
}
}
在你的行动中:
var getExternalLoginInfor = UserManager.GetLogins(User.Identity.GetUserId());
希望这有帮助。
答案 1 :(得分:0)
您可以通过GetExternalLoginInfo
的扩展程序AuthenticationManager
获取它。
var loginInfo = AuthenticationManager.GetExternalLoginInfo();
if (loginInfo != null)
{
var externalProvider = loginInfo.Login.LoginProvider;
}
编辑:
在ApplicationSignInManager : SignInManager
类覆盖方法SignInAsync
您可以使用externalLoginInfo并将其添加为声明
public override async Task SignInAsync(User user, bool isPersistent, bool rememberBrowser)
{
var userIdentity = await CreateUserIdentityAsync(user);
//
var logininfo = AuthenticationManager.GetExternalLoginInfo();
userIdentity.AddClaim(new Claim("ExternalLoginProvider", logininfo.Login.LoginProvider));
//
AuthenticationManager.SignOut(DefaultAuthenticationTypes.ExternalCookie, DefaultAuthenticationTypes.TwoFactorCookie);
if (rememberBrowser)
{
var rememberBrowserIdentity = AuthenticationManager.CreateTwoFactorRememberBrowserIdentity(ConvertIdToString(user.Id));
AuthenticationManager.SignIn(new AuthenticationProperties { IsPersistent = isPersistent }, userIdentity, rememberBrowserIdentity);
}
else
{
AuthenticationManager.SignIn(new AuthenticationProperties { IsPersistent = isPersistent }, userIdentity);
}
}
然后你可以像这样访问它:
var identity = (ClaimsIdentity)User.Identity;
var loginProvide = identity.FindFirst("ExternalLoginProvider").Value;