2010-04-28 209 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。)