Tout d'abord, présentons ce qu'est la connexion par scan QR code. Désormais, la plupart des étudiants ont installé QQ, Taobao, Tmall et d'autres logiciels sur leur téléphone mobile. Les entreprises qui développent ces applications ont leurs sites Web correspondants. Afin de rendre la connexion plus pratique et plus sécurisée pour les utilisateurs lorsqu'ils utilisent leur site Web. Ces sociétés fournissent des services dans lesquels vous pouvez vous connecter à l'aide de votre téléphone mobile et de la numérisation. L'effet lors de la connexion à la page Web est le suivant :
La prochaine étape est la mise en œuvre détaillée de ce service. Lorsqu'un utilisateur ouvre la page de connexion du site Web, une requête sera envoyée au serveur du navigateur pour obtenir le code QR de connexion. C'est le principe.
Après avoir reçu la demande, le serveur génère aléatoirement un uuid, stocke cet identifiant en tant que valeur clé dans le serveur Redis et définit un délai d'expiration. Après l'expiration, le code QR de connexion de l'utilisateur doit être actualisé et réacquis. En même temps, combinez cette valeur clé avec la chaîne de vérification de l'entreprise et générez une image de code QR via l'interface de génération de code QR (génération de code QR, il existe de nombreuses interfaces et codes sources prêts à l'emploi sur Internet, qui ne seront pas présenté ici.) Ensuite, renvoyez l'image du code QR et l'uuid au navigateur de l'utilisateur.
Le navigateur enverra périodiquement des requêtes au serveur pour vérifier si la connexion a réussi. Ces requêtes incluent le code QR et les informations UUID. La requête porte uuid comme identifiant de la page actuelle. Certains étudiants peuvent être confus car le serveur stocke uniquement l'UUID comme clé dans Redis, alors d'où viennent les informations d'identification de l'utilisateur ?
Il y a en effet ici les informations d'identification de l'utilisateur. Ces informations d'identification sont stockées dans Redis par le serveur mobile.
Lorsque le navigateur obtient le code QR, il l'affiche sur la page Web et invite l'utilisateur : "Veuillez sortir votre téléphone portable et ouvrir le scan pour vous connecter." L'utilisateur sort son téléphone portable et scanne le QR code pour obtenir une information de vérification et un uuid (la fonction de scanner le QR code pour obtenir une chaîne a également de nombreuses démos sur Internet, je ne la présenterai donc pas en détail ici) .
Étant donné que le terminal mobile est déjà connecté, lors de l'accès au serveur de terminal mobile, les paramètres porteront le jeton d'un utilisateur, et le serveur de terminal mobile pourra l'analyser avec l'ID utilisateur de l'utilisateur (ici, la valeur est extraite du jeton au lieu de le terminal mobile) La transmission directe de l'ID utilisateur est pour des raisons de sécurité. La transmission directe de l'ID utilisateur peut être interceptée et modifiée. Le jeton est crypté, le risque de modification sera donc beaucoup plus faible).
Le terminal mobile utilise les données analysées et le jeton utilisateur comme paramètres pour envoyer une demande de connexion de vérification au serveur (le serveur ici est le serveur mobile, et le serveur mobile et le serveur Web ne sont pas le même serveur). Après avoir reçu la demande, le serveur comparera d'abord les informations de vérification dans les paramètres pour confirmer s'il s'agit de l'interface demandée par l'utilisateur pour se connecter. Si tel est le cas, renvoyez un message de confirmation sur le téléphone mobile.
Lorsque le terminal mobile reçoit une réponse, la boîte de confirmation de connexion doit être affichée pour éviter une mauvaise utilisation de l'utilisateur et améliorer l'expérience de connexion. Une fois que l'utilisateur a confirmé que l'opération de connexion est effectuée, le téléphone mobile renvoie la demande. Une fois que le serveur a obtenu l'uuId et l'userId, il stocke l'ID utilisateur de l'utilisateur comme valeur dans une paire clé-valeur dans Redis avec uuid comme clé.
Ensuite, lorsque le navigateur envoie à nouveau une demande, le serveur côté navigateur peut obtenir un identifiant utilisateur et appeler la méthode de connexion pour générer un jeton côté navigateur. Lorsque le navigateur envoie à nouveau une demande, renvoyez l'utilisateur. informations au navigateur et la connexion est réussie. Nous choisissons de stocker les identifiants utilisateur plutôt que de stocker directement les informations utilisateur, car les informations utilisateur sur le téléphone mobile et sur le navigateur peuvent ne pas être exactement les mêmes.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!