我有一个CakePHP 1.3.10网站,其中包含使用Auth的登录系统。如何防止同一用户名/密码从不同位置同时登录?它应该以一种方式工作,当已经登录的用户从不同的位置登录时,第一个被踢出(所以最后一个可以继续使用我的网站)。
我一直在做一些研究,但我找不到“足够好”的解决方案。当用户登录时,似乎是一个简单的布尔值为1,但我不知道如何处理它以使我的描述方式工作。
简单的一点是,当用户注销时,我将该值更改为0.但是,如果他只是关闭浏览器呢?当用户登录并且布尔值已设置为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
字段中(可能包含序列化数组或类似的东西)。