用户数据库结构,允许多个同时登录到同一帐户

时间:2010-09-22 17:58:30

标签: php database-design authentication

我的某个网络应用程序当前缺少的一项功能是,一个用户一次只能登录一台计算机。也就是说,如果用户登录其他地方,他的上一个会话将被注销。

这是由于我当前的用户表包含列:

user: id, username, hash, salt... cursession

当每个用户登录时,会话ID被放入“cursession”字段,并且在每次页面加载时,将对数据库进行检查。因此,一次只能激活一个“会话”。

  1. 当前的表结构和方法是否安全且标准?这个系统非常即兴,我没有专业经验。
  2. 允许多个同时登录的方法是什么?我只是想添加一个带有更多userid-cursession关系的“sessions”表,但这样做的标准方法是什么?

1 个答案:

答案 0 :(得分:1)

我建议您将当前登录的userid放在用户的会话中(作为会话变量),并从表中删除cursession字段。您不需要重新发明会话处理,因为PHP已经内置了它。

这样,用户可以一次登录多台计算机。会话变量也是安全的,因为它们不会被浏览器操纵。浏览器中唯一保留的是会话ID,用于标识当前会话,所有其他数据都存储在服务器端。如果用户更改其浏览器cookie,唯一会发生的事情是他将被注销(开始一个空的会话),因此他不能强迫自己以其他人的身份登录。