2010-04-28 40 views
1

我在python中有一个web应用程序,其中用户提交他们的电子邮件和密码。这些值与存储在mysql数据库中的值进行比较。如果成功,脚本将生成一个会话ID,将其存储在数据库中的电子邮件旁边,并使用会话ID设置一个cookie,允许用户与视线的其他部分进行交互。在python web应用程序中自动注销

当用户单击注销时,脚本会从数据库中删除会话标识并删除该Cookie。该cookie在5小时后过期。我担心的是,如果用户不注销并且cookie过期,脚本将强制他登录,但是如果他从之前复制了会话ID,它仍然可以被验证。

如何在5小时后自动从mysql数据库中删除会话ID?

回答

1

您可以将过期时间编码为会话ID的一部分。 然后,当您验证会话ID时,您还可以检查它是否已过期,如果是,则强制用户再次登录。

您还可以定期清理数据库,删除过期的会话。

0

您必须将时间戳记添加到数据库中的会话ID才能知道它何时用完。

更好,只是在前面是否它仍然是一个有效的会话ID看号码进行会话ID本身,例如:

Set-Cookie: session=1272672000-(random_number);expires=Sat, 01-May-2010 00:00:00 GMT 

,使你的脚本可以看到的时间戳部分。

更好的是,将期满时间戳作为会话ID的用户ID部分,并在最后将该位用作用户ID,到期时间和密钥的加密散列。然后,您可以验证ID 知道它属于哪个用户,而无需在数据库中存储任何内容。 (Related PHP example。)