我正在使用Tornado
的{{3}}功能来实现用户会话。 set_secure_cookie
功能使我们能够创建Cookie,其中Cookie到期的下限可以设置为1天。现在,我需要在一小时内使这些安全的cookie过期。我可以轻松实现这一目标吗?
一种解决方案是使用cookie值附加时间戳。例如,如果Cookie值是我的用户ID(例如1
),那么我可以创建一个像1_{current datetime}
这样的Cookie。稍后验证时,我可以拆分cookie值并检查underscore character
之后的日期时间是否不小于当前时间之前的1小时。这听起来像我一样,因为用户无法修改Tornado的安全Cookie。
但是,有没有比这更优雅的解决方案?
答案 0 :(得分:2)
使用小数天。 12小时,0.5天等
实际代码的作用是
datetime.datetime.utcnow() + datetime.timedelta(days=expires_days)
timedelta将所有内容转换为秒,因此小数点数为0.4几乎是一小时。
使用get_secure_cookie
阅读Cookie时,您也应该注意。您应该在阅读时将相同的值传递给max_age_days
。