当 session 存储在默认的 php session 存储中时,是否有任何方法可以删除用户 session ?
例如,我是网站管理员,我想禁止登录用户。用户认证状态存储在 session 中。我正在从数据库中删除用户行,但用户仍处于登录状态,所有必要的身份验证信息也存储在 session 中。我需要删除/修改 session 。
可能的方式:
- 在每次请求时从数据库中加载用户的行
- 创建文件,说要删除用户的 session 并在每次请求时检查此文件是否存在
- 在/dev/shm 中创建文件(检查非常快),但重新启动时文件将被删除
- 在数据库中存储 session (我的项目的开销)
- 在 nosql(redis、memcachedb)中存储 session (我的项目的开销)
除了将用户 session 存储在数据库或 nosql 数据存储中之外,还有什么优雅的方法吗?
最佳答案
我知道如何做到这一点的唯一方法是删除 session 记录。如果它是一个文件,删除 session 文件。如果 session 存储在数据库或内存缓存中,请将其删除。棘手的问题是如何找到 session ID,以及用户是否存在 session ID。
如果它是一个文件,并且您在其中存储了电子邮件或用户 ID,则可以查找该文件。数据库中的 session 存储应该易于查询。不确定如何在内存缓存中执行此操作。
如果你不在每个请求上重新生成 session ,你总是可以在创建 session 时将 session_id 设置为用户唯一的东西——如果你不使用 SSL 请小心,如果您使用的唯一 key 很容易被猜到(如 user_id)。然后,您可以在用户登录时将用户 session ID 与用户记录一起存储在数据库中。
关于php - 在 session 存储在默认 php session 存储中的情况下删除/管理用户 session 的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13423202/