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 Scan-Code 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 sortieren, damit wir die Denkrichtung zur Lösung dieses Problems verstehen können. 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 weiter als das Öffnen der URL des WeChat-QR-Codes, den ich erfasst habe. /login.weixin.qq.com/l/YdmTu30I5A== , YdmTu30I5A== in dieser URL stellt die eindeutige ID dieser Sitzung dar. Dies ähnelt in gewisser Weise der Sitzungs-ID im Browser. Über diese ID kann WeChat Feedback geben Bestätigungsergebnisse an die Webseite weiter. Für die Nutzung der WeChat-QR-Code-Anmeldefunktion gibt es zwei Voraussetzungen: Erstens muss die WeChat-App auf dem Client installiert sein. Zweitens müssen sich Benutzer bei der WeChat-App anmelden. https://wx.qq.com/
Python Websocket Message Push
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 also darin, vor dem Scannen sicherzustellen, dass der Benutzer ein verifizierter und legitimer Benutzer ist (die Verifizierungsmethode kann Benutzername + Passwort oder ein sicherer Schlüssel sein). Schieben Sie dieses Ergebnis einfach an die Server, wenn Sie entscheiden, ob Sie sich anmelden möchten oder nicht. 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.
Mit der Identitätsüberprüfung lösen wir nun 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! Dies beinhaltet eine andere Technologie – die Web-Echtzeit-Push-Technologie. Durch die Verwendung der Push-Technologie können serverseitige und clientseitige Ressourcen 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, jeder. Sie können hingehen und sich den Effekt ansehen.