2015-05-29 27 views
1

我使用TornadoSecure Cookie功能來實現用戶會話。 set_secure_cookie函數使我們能夠創建一個Cookie,其中cookie的有效期限可以設置爲1天。現在,我需要在一小時內將這些安全cookie過期。我能輕鬆實現嗎?龍捲風創建一個安全Cookie,失效時間少於1天

一個解決方案是附加一個時間戳與cookie值。例如,如果Cookie值是我的用戶ID(例如1),那麼我可以創建一個像1_{current datetime}這樣的cookie。稍後驗證時,我可以拆分cookie值,並檢查underscore character之後的日期時間是否不少於當前時間之前的1小時。這聽起來可以接受,因爲Tornado的安全Cookie不能被用戶修改。

但是,有沒有比這更優雅的解決方案?

回答

1

使用小數天。 12小時,0.5天,等

什麼實際的代碼確實是

datetime.datetime.utcnow() + datetime.timedelta(days=expires_days) 

而且timedelta轉變一切秒,所以0.4的小數日期將近一個小時。

當您使用get_secure_cookie閱讀cookie時,您還應該注意。閱讀時,您應該將相同的值傳遞給max_age_days

+0

請注意,無論何時修改過期時間,通常在調用'get_secure_cookie'時都應更改'max_age_days'(兩者具有稍微不同的含義; get端的'max_age_days'更重要,因爲用戶可以保存舊的cookie並在過期時間內重複使用)。分數值也適用於此。 –

+0

@BenDarnell如果我設置的cookie有效性爲1小時,並且仍然不帶參數調用get_secure_cookie(意味着最大31歲時),它可以檢測到cookie無效(過去1小時)。我對麼? – giga

+0

@BenDarnell我創建了一個小時有效的cookie。但cookie在一小時後似乎仍然有效!我是否還需要爲「max_age_days」參數傳遞「一小時」值? – giga