使用 PHP 的用户标识使所有会话无效


Invalidate all sessions by a user id with PHP

我们使用PHP并将会话数据存储在memcached中。有没有办法使给定用户 ID 的所有会话无效?用例是,当用户更改其密码时,我们会将其注销,但是我们也应该在该用户ID下使所有其他会话无效。

这可能吗?

我认为您必须对每个请求进行检查,以确保用户上下文仍然有效。

第一个想法是在后端存储中有一个记录,其中包含用户密码已更新的时间戳。当用户登录时,您可以编写带有时间戳的 cookie 或将其存储在会话中。在随后的请求/检查中,只要cookie/会话日期比它通过的密码更改日期新。当密码更改时,后端记录上的日期将设置为当前时间戳,下一次检查将失败并销毁用户会话。

因此,在这种情况下,在下一个请求来自旧会话之前,实际的失效不会发生。