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

时间:2015-01-20 20:40:53

标签: php session memcached session-management

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

这可能吗?

1 个答案:

答案 0 :(得分:0)

我认为你必须在每个请求上添加一个检查,以确保用户上下文仍然有效。

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

因此,在此上下文中,在下一个请求来自旧会话之前,实际的失效不会发生。