MVC Owin Identity 将多个社交帐户链接到一个用户
MVC Owin Identity Linking multiple social accounts to a single user
我的 MVC 网站有 MVC Owin Identity 登录。
因此用户可以使用社交网络访问我的网站。
现在我想允许用户将多个社交网络连接到这些帐户。
例如
用户在我的网站上使用 Facebook 注册。
在注册期间,通过 Facebook UserLogin 连接为他创建了新的本地用户。
现在我想在用户的个人资料页面上添加其他社交并显示已连接的社交。
如何使用 MVC Owin Identity 执行此操作?
我的解决方案很简单。
我只是检查用户是否登录并向他附加新社交。
public async Task<ActionResult> Callback(string provider)
{
var externalLoginInfo = await _applicationSignInManager.AuthenticationManager.GetExternalLoginInfoAsync();
if (externalLoginInfo == null)
{
return RedirectToAction("Index", "SignIn");
}
// Check if the user with this external login provider already has a login
if (await _applicationSignInManager.UserManager.FindAsync(externalLoginInfo.Login) != null) return RedirectToAction("Index", "Social");
await _applicationSignInManager.UserManager.AddLoginAsync(HttpContext.GetOwinContext().Authentication.User.Identity.GetUserId<long>(), externalLoginInfo.Login);
return RedirectToAction("Index", "Social");
}
我的 MVC 网站有 MVC Owin Identity 登录。 因此用户可以使用社交网络访问我的网站。 现在我想允许用户将多个社交网络连接到这些帐户。
例如 用户在我的网站上使用 Facebook 注册。 在注册期间,通过 Facebook UserLogin 连接为他创建了新的本地用户。
现在我想在用户的个人资料页面上添加其他社交并显示已连接的社交。
如何使用 MVC Owin Identity 执行此操作?
我的解决方案很简单。 我只是检查用户是否登录并向他附加新社交。
public async Task<ActionResult> Callback(string provider)
{
var externalLoginInfo = await _applicationSignInManager.AuthenticationManager.GetExternalLoginInfoAsync();
if (externalLoginInfo == null)
{
return RedirectToAction("Index", "SignIn");
}
// Check if the user with this external login provider already has a login
if (await _applicationSignInManager.UserManager.FindAsync(externalLoginInfo.Login) != null) return RedirectToAction("Index", "Social");
await _applicationSignInManager.UserManager.AddLoginAsync(HttpContext.GetOwinContext().Authentication.User.Identity.GetUserId<long>(), externalLoginInfo.Login);
return RedirectToAction("Index", "Social");
}