Ich bin ganz neu in Identity
und versuchen, durch das Ansehen von Videos in https://channel9.msdn.com/Series/Customizing-ASPNET-Authentication-with-IdentityVerknüpfung von externen Logins vorhandenen Benutzer
In der Standard ASP.Net MVC-Vorlage zu lernen, können Sie mehrere externe Logins (google, facebook) verlinken auf Ihr Konto (über /Manage
) wenn Sie bereits eingeloggt sind.
Aber was ist, wenn der Benutzer sich zuerst auf unserer Website mit seinem Google-Konto eingeloggt hat und sich abmeldet und an einem anderen Tag versucht, sich mit seinem Facebook-Konto anzumelden. Angenommen, beide Facebook- und Google-Konten verwenden die gleiche E-Mail-Adresse, kann sich der Benutzer nicht auf der Website anmelden, da die Standardvorlage dies nicht zulässt, da UserManager.CreateAsync
fehlschlägt. Ich weiß, dass sie ihre E-Mail-Adresse und ihren Login ändern können, aber dadurch werden zwei verschiedene Accounts für denselben Benutzer erstellt.
var info = await AuthenticationManager.GetExternalLoginInfoAsync();
if (info == null)
{
return View("ExternalLoginFailure");
}
var user = new ApplicationUser { UserName = model.Email, Email = model.Email };
var result = await UserManager.CreateAsync(user);
if (result.Succeeded)
{
result = await UserManager.AddLoginAsync(user.Id, info.Login);
if (result.Succeeded)
{
await SignInManager.SignInAsync(user, isPersistent: false, rememberBrowser: false);
return RedirectToLocal(returnUrl);
}
}
ich den Code in ExternalLoginConfirmation
verändert, so dass es den neuen externen Anbieter zu AspNetUserLogins
, wenn der Benutzer überprüft und Anzeigen vorhanden ist. Kann mir bitte jemand sagen, ob dies der richtige Weg ist? oder wenn es einen besseren Weg gibt, es zu tun.
Haben Sie bestätigt, dass dies der ideale Weg ist, damit umzugehen? – stephen776
Nein, aber ich benutze es im Moment für ein Projekt, an dem ich gerade arbeite. Ich habe versucht, dies auch im Microsoft Virtual Academy-Forum zu stellen. Aber leider keine Antwort noch. – Amila
Ich bin zur Zeit in der gleichen Situation wie du. Ich habe darüber nachgedacht, es auf die gleiche Weise zu tun. Könnten Sie uns bitte wissen lassen, ob Sie die bessere Lösung gefunden haben? – TTCG