Introduction
La mise en œuvre d'une fonctionnalité "Se souvenir de moi" permet aux utilisateurs rester connecté même après avoir fermé son navigateur. Cette fonctionnalité améliore le confort de l'utilisateur et améliore l'expérience utilisateur globale. Dans cet article, nous examinerons un moyen sécurisé de stocker et de vérifier les cookies dans le navigateur d'un utilisateur pour un mécanisme de connexion persistant.
Stockage des cookies en toute sécurité
Pour sécuriser stockons un cookie, nous utilisons une table séparée dans la base de données :
CREATE TABLE `auth_tokens` ( `id` integer(11) not null UNSIGNED AUTO_INCREMENT, `selector` char(12), `token` char(64), `userid` integer(11) not null UNSIGNED, `expires` datetime, PRIMARY KEY (`id`) );
Processus après la journalisation Dans
Une fois la connexion réussie avec l'option "Se souvenir de moi" activée :
Définissez un cookie avec les valeurs suivantes :
'remember': $selector.':'.base64_encode($authenticator)
Ré-authentification sur la page Charger
Pour réauthentifier l'utilisateur :
if (empty($_SESSION['userid']) && !empty($_COOKIE['remember'])) { list($selector, $authenticator) = explode(':', $_COOKIE['remember']); $row = $database->selectRow( "SELECT * FROM auth_tokens WHERE selector = ?", [ $selector ] ); if (hash_equals($row['token'], hash('sha256', base64_decode($authenticator)))) { $_SESSION['userid'] = $row['userid']; // Regenerate login token and update database } }
Détails de l'approche
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!