在数据库中停用未使用的会话ID?

时间:2012-11-26 06:13:26

标签: authentication security session-cookies form-authentication

我有一个具有表单身份验证的网站:

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

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

请注意,当用户选择不继续登录时,当他关闭浏览器时,令牌cookie将过期,如果用户选择继续登录,则令牌cookie将在他登录后一年到期。 / p>

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

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

如何在数据库中停用未使用的令牌?

1 个答案:

答案 0 :(得分:0)

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