php - 来自更多位置的 "Remember me"

标签 php mysql authentication

我正在尝试使用 PHP 和 MySQL 创建一个登录系统。我使用 cookie 是为了让用户长时间保持登录状态。 cookie 有一个随机生成的字符串,它也在数据库中。将它们相互比较并采取适当的行动。基本上,它是标准的身份验证系统。

我的问题是我不太确定如何从多个位置处理身份验证问题。由于每个用户只有一个随机字符串,如果他从另一个位置登录,他将从一个位置注销。

我能想出的唯一解决方案是一个表,其中存储了用户的多次登录,每个登录都有一个单独的随机字符串。

这是正确的方法吗?未使用的 session 会怎样?

最佳答案

如果要支持多个位置,则不能将 cookie 值保留在用户表中。相反,您应该创建一个新的自动登录表,分别使用 cookie 值和用户 ID 作为主键和外键。我相信这也是您的想法。

然后,出于管理目的,您可以记录最后一次使用任何值登录的时间。超过 XX 天的任何内容都会被删除,用户需要重新登录。您可以为此设置一个 cron 作业,也可以让它在每次有人使用 cookie 登录时运行。

cron 删除作业可以处理更多记录(因为没有人在等待它完成),但为了优化,您需要日期字段上的索引(以防止表扫描)。

在每次登录时进行管理的优点是您只需查询该用户的 cookie 值,并且由于外键约束,查找速度很快。但是你只能清理当前用户的cookies,所以你可能会收集再也不会使用的cookies。

关于php - 来自更多位置的 "Remember me",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13557716/

相关文章:

asp.net - 内网ASP.NET网站Windows认证及重现windows登录框

node.js - Passport 序列化和反序列化与 JWT

php - Google Maps API 3 从当前位置从 MySQL 加载标记

php - codeigniter session 和 cookie

php - 选择表列名称然后显示它们

php - MYSQLi 查询问题 (PHP)

mysql - 能否将 DMS 配置为在仅插入模式下运行?

php - 如何使用别名和 $_GET 参数配置 yii2 urlManager 规则

php - Mysql使用连接表获取表中的空值

authentication - 登录尝试失败后将用户名保留在表单输入字段中(Java/Spring-security)