cakephp阻止用户同时从多个位置登录

时间:2012-03-12 15:24:00

标签: cakephp login

我有一个CakePHP 1.3.10网站,其中包含使用Auth的登录系统。如何防止同一用户名/密码从不同位置同时登录?它应该以一种方式工作,当已经登录的用户从不同的位置登录时,第一个被踢出(所以最后一个可以继续使用我的网站)。

我一直在做一些研究,但我找不到“足够好”的解决方案。当用户登录时,似乎是一个简单的布尔值为1,但我不知道如何处理它以使我的描述方式工作。

简单的一点是,当用户注销时,我将该值更改为0.但是,如果他只是关闭浏览器呢?当用户登录并且布尔值已设置为1时,我该怎么办?我如何踢“老”用户?

非常感谢任何建议......

1 个答案:

答案 0 :(得分:3)

为此,请将config / core.php更改为使用数据库驱动的会话。

Configure::write('Session.save', 'database');

之后,还取消注释以下行:

//Configure::write('Session.database', 'default');

在大多数情况下,您可以使用默认的数据库配置。

然后,使用Cake控制台准备数据库以托管会话:

cake schema create Sessions

最后,在您的登录操作中,检查刚刚登录的用户是否已存在会话,并从会话表中使其旧会话无效/删除。

我之前没有使用过这个方法,但我认为用户id / username存储在sessions表的data字段中(可能包含序列化数组或类似的东西)。