Ich versuche zu verstehen, wie OAuth funktioniert, aber es fühlt sich an wie eine große Zaubershow, und das mag ich nicht.
Ich habe ein neues MVC5-Projekt erstellt und die Facebook-Authentifizierung aktiviert. Das alles funktioniert einfach, aber ich versuche zu verstehen, wie das funktioniert.
Hier ist der Teil, wo ich verloren gehe. Stellen Sie sich vor, ein Benutzer möchte sich zum ersten Mal anmelden. Diese Methode wird ausgeführt:
%Vor% Dieser Code zeigt die Anmeldeseite des FB und der FB kümmert sich um die Anmeldeinformationen. Das alles funktioniert gut. Aber dann wird diese Zeile ausgeführt: var result = await SignInManager.ExternalSignInAsync(loginInfo, isPersistent: false);
. Ich kann in loginInfo
sehen, dass ein Name gesetzt ist, aber die Variable result
ist auf Failure
gesetzt. Warum das? Der Benutzer wurde gerade vom FB authentifiziert. Warum ist der Wert false
?
Aber dann, für mein Gefühl wird es seltsamer. Wenn ich die Beispielanwendung weiterhin ausführe, möchte ich eine E-Mail-Adresse eingeben. Ich gebe eine E-Mail-Adresse ein und voila, ich bin eingeloggt. Da ich diese ganze Login-Sache erkunde, melde ich mich ab und möchte mich erneut einloggen. Also logge ich mich ab und melde mich sofort wieder mit dem FB an. Und hier schlage ich meinen Kopf gegen die Wand. Wenn der Code erneut auf diese Zeile trifft: var result = await SignInManager.ExternalSignInAsync(loginInfo, isPersistent: false);
Das Ergebnis wird auf true
!! gesetzt.
Könnte mir bitte jemand erklären, was hier alles vor sich geht?
Wenn Sie eine externe Anmeldung verwenden, validiert der SignInManager die Benutzeranmeldeinformationen bei der externen Partei (in diesem Fall Facebook). Wenn die externe Partei die Anmeldeinformationen erfolgreich überprüft hat, prüft der SignInManager, ob ein Benutzerdatensatz vorhanden ist. Da dies die erste Anmeldung ist, gibt es keinen verfügbaren Benutzerdatensatz. Dieser Teil kümmert sich darum:
%Vor%Damit können Sie eine andere E-Mail-Adresse verwenden. Meist ist es üblich, die gleiche E-Mail-Adresse zu verwenden!
Einige Beispiele: Ссылка .
Tags und Links asp.net-mvc c# oauth facebook-oauth