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

cakephp防止用户同时从多个位置登录,cakephp,login,Cakephp,Login,我有一个CakePHP1.3.10网站,带有使用Auth的登录系统。如何防止同一用户名/密码同时从不同位置登录?它的工作方式应该是,当一个已经登录的用户从不同的位置登录时,第一个用户会被踢出(这样最后一个用户可以继续使用我的网站) 我一直在做一些研究,但我找不到“足够好”的解决方案。看起来,一个简单的方法是在用户登录时将布尔值存储为1,但我不知道如何处理它才能使其按照我描述的方式工作 最简单的部分是,当用户注销时,我将该值更改为0。但是如果他只是关闭浏览器呢?当用户登录并且布尔值已设置为1时,我

我有一个CakePHP1.3.10网站,带有使用Auth的登录系统。如何防止同一用户名/密码同时从不同位置登录?它的工作方式应该是,当一个已经登录的用户从不同的位置登录时,第一个用户会被踢出(这样最后一个用户可以继续使用我的网站)

我一直在做一些研究,但我找不到“足够好”的解决方案。看起来,一个简单的方法是在用户登录时将布尔值存储为1,但我不知道如何处理它才能使其按照我描述的方式工作

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


如果您有任何建议,我们将不胜感激……

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

Configure::write('Session.save', 'database');
之后,还要取消注释以下行:

//Configure::write('Session.database', 'default');
在大多数情况下,您都希望使用默认的DB配置

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

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


我自己以前没有使用过这种方法,但我认为用户id/用户名存储在会话表的
数据
字段中(该字段可能包含序列化数组或类似的内容)。

谢谢您的回复。我有一个问题:从Cake控制台运行该命令将在DB中创建一个表?如果是这样,我如何选择要创建的数据库(在我的web中,我使用的是两个不同的数据库)?@Albert这就是您需要在核心配置中将
Session.database
值设置为的内容。无论您在那里设置了什么,都应该用于创建表。或者,如果有疑问,您也可以“读取”模式文件并手动创建表。好的,现在数据库会话正在工作。我登录后可以在DB sessions表中看到一个新条目。它有一个id字段(我假设它是会话值)、一个数据字段(有一个包含会话和用户信息的序列化数组)和一个带有11位数字的expires字段。如何检查刚刚登录的用户是否已经存在会话?如果它存在,我是否只删除()该行并创建一个包含新会话信息的新行?