1

我有一个拥有表单身份验证的网站:取消激活数据库中未使用的会话ID?

1)用户登录并选择是否让他登录。

2)服务器生成令牌,将其保存到数据库并向浏览器发送令牌cookie。

注意,当用户选择不保留登录,当他关闭浏览器,令牌cookie将到期,如果用户选择保持登录状态,他在登录后,令牌cookie将到期的一年。

3)当用户注销时,服务器将停用保存在数据库中的令牌并删除浏览器中的令牌cookie。

问题是,如果用户选择不保持登录状态,如果他关闭浏览器,令牌cookie将过期,但保存在数据库中的令牌不会被停用 - 服务器将不知道用户是否关闭了他浏览器。

我该如何取消未使用的令牌在我的数据库?

回答

0

为了记住登录细节,在服务器端持续整个会话并不常见。我建议遵循facebook/google的设计:如果用户希望浏览器“记住他”,则生成一些随机安全的“访问令牌”cookie,该cookie存储在用户表中作为该用户的最后一个有效访问令牌。然后,当浏览器再次访问网站时,它会发送该cookie并且服务器可以检查它是否与任何现有(有效)访问令牌相匹配,从而登录该用户。

+0

我生成会话ID(令牌),将其保存到数据库并将其作为cookie发送到浏览器。当用户访问我的网站时,我检查了他的会话cookie并在我的数据库中找到匹配项。我与谷歌或Facebook的有什么不同? – dpp

+0

你还需要在你的数据库中写入一些到期时间戳,用于令牌,并在登录时进行测试。您不需要从数据库中删除令牌,只需保留最后一个(每个用户一个)。当然,你不需要为匿名会话创建令牌....否则你的数据库将爆炸:) –