简介
实现“记住我”功能允许用户即使在关闭浏览器后也能保持登录状态。此功能增强了用户便利性并改善了整体用户体验。在本文中,我们将深入研究一种在用户浏览器中存储和验证 Cookie 的安全方法,以实现持久登录机制。
安全地存储 Cookie
安全地存储存储 cookie,我们在数据库中使用单独的表:
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`) );
记录后处理在
成功登录并启用“记住我”选项后:
使用以下值设置 cookie:
'remember': $selector.':'.base64_encode($authenticator)
重新验证页面加载时
重新验证用户身份:
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 } }
方法详细信息
以上是如何使用 PHP 和 cookie 实现安全的“记住我”功能?的详细内容。更多信息请关注PHP中文网其他相关文章!