Vor kurzem arbeite ich an einer Scan-Code-Anmeldefunktion. Aus diesem Grund habe ich auch online nach der Implementierung der WeChat-Scan-Anmeldung gesucht. Als diese Funktion abgeschlossen war, beschloss ich, die gesamte Implementierungsidee für mich selbst und für andere Programmierer mit ähnlichen Anforderungen zu klären.
Um die Anmeldung per Scancode zu realisieren, müssen wir zwei Probleme lösen:
1. Wie kann das Berechtigungssicherheitsproblem gelöst werden, ohne den Benutzernamen und das Passwort einzugeben? Mit anderen Worten: Wie kann man dem Server mitteilen, dass der Client, der den QR-Code scannt, ein legitimer Benutzer ist?
2. Wie reagiert der Server entsprechend auf der Webseite in Echtzeit basierend auf der Auswahl des Benutzers auf dem Client?
Lassen Sie uns zunächst die Implementierungsideen von WeChat klären, um uns das Verständnis für die Richtung zur Lösung dieses Problems zu erleichtern. Der QR-Code für die WeChat-Anmeldung ist eigentlich eine Form der Umwandlung einer URL in einen QR-Code. Nach dem Scannen des Codes über den WeChat-Client ist es nichts anderes als das Öffnen der URL. Die URL des WeChat-QR-Codes lautet https:/. /login.weixin.qq.com/l/YdmTu30I5A==, YdmTu30I5A== in dieser URL stellt die eindeutige ID dieser Sitzung dar, die der Sitzungs-ID im Browser etwas ähnelt. Über diese ID kann WeChat gezieltes Feedback geben Bestätigungsergebnisse an die Webseite weiter. Für die Nutzung der WeChat-QR-Code-Anmeldefunktion gibt es zwei Voraussetzungen: Zunächst muss die WeChat-App auf dem Client installiert sein. Zweitens müssen sich Benutzer bei der WeChat-App anmelden. https://wx.qq.com/
Python Web Echtzeit-Nachrichten-Hintergrundserver-Push-Technologie
Warum brauchen wir diese beiden Bedingungen? Denn wenn WeChat bestätigt, ob die Anmeldung bei der Webversion zugelassen werden soll, muss WeChat die Anmeldeinformationen der aktuellen App extrahieren und die oben genannte Sitzungs-ID an den Server senden, damit der Server nach Erhalt der Anmeldeinformationen und der Sitzung zwei Dinge bestätigen kann ID: Eine besteht darin, zu bestätigen, dass der angemeldete Client-Benutzer authentifiziert ist. Die andere besteht darin, den Sitzungs-ID-Server zu verwenden, um zu wissen, an welche Webseite die Feedback-Ergebnisse gesendet werden sollen.
Für den ersten Punkt besteht unser Schlüssel darin, vor dem Scannen sicherzustellen, dass der Benutzer ein verifizierter und legitimer Benutzer ist (die Verifizierungsmethode kann Benutzername und Passwort oder ein sicherer Schlüssel sein. Bevor Sie sich entscheiden, ob Sie sich anmelden möchten, drücken Sie dies einfach). Ergebnis an die Serverseite. Wenn der Benutzer nicht überprüft, ob es legal ist, können Sie dem Benutzer direkt mitteilen, dass der QR-Code nicht erkannt werden kann, oder ihn auffordern, sich zuerst bei der App anzumelden, genau wie bei WeChat.
Lösen wir nun mit der Identitätsprüfung das zweite Problem: Wie werden die Feedback-Ergebnisse in Echtzeit auf der Webseite angezeigt? Einige Freunde sagen vielleicht, dass es für den Client einfach ist, eine Anfrage im Hintergrund zu senden, während auf der Webseite Ajax verwendet wird, um sie regelmäßig an den Server zu senden, um zu sehen, ob es Feedback gibt. Ich bin mit diesem Ansatz nicht einverstanden, da die Ajax-Abfragemethode Client- und Serverressourcen verbraucht! Dabei handelt es sich um eine weitere Technologie – die Web-Echtzeit-Push-Technologie. Durch die Verwendung der Push-Technologie können Ressourcen auf dem Server und dem Client eingespart und jede Nachricht stabil übertragen und empfangen werden. Bei der Implementierung habe ich einen Push-Dienst eines Drittanbieters verwendet – GoEasy Push. Andere Funktionen in unserem Projekt verwenden ebenfalls den GoEasy-Web-Echtzeit-Push Login-Feedback-Ergebnisse an den Server. Meine Implementierungsschritte sind sehr einfach. Verwenden Sie die übertragene Sitzungs-ID als Kommunikationskanal zwischen dem Client und der Webseite. Die Webseite abonniert die Sitzungs-ID als Wertkanal. Der Client sendet das Überprüfungsergebnis und die Sitzungs-ID. Der Server kann diesen Kanal nutzen, um die Ergebnisse aktiv an die Webversion weiterzuleiten! Wenn der Client auch entsprechendes Feedback geben muss, muss er nur diesen Kanal abonnieren, und der Server überträgt die Ergebnisse gleichzeitig an die Webversion und der Client kann ihn nach Erhalt der Nachricht verwenden Rufen Sie bei Bedarf die Callback-Funktion von goeasy auf. Informationen zur Verwendung von GoEasy Push finden Sie in diesem Blog: http://www.cnblogs.com/jishaochengduo/articles/5552645.html Darüber hinaus gibt es auch eine Demo auf der offiziellen Website von GoEasy Push: GoEasy QR-Code Login-Demo scannen, alle. Sie können hingehen und sich den Effekt ansehen.