Tornado 创建一个过期时间小于 1 天的安全 Cookie
Tornado Create a Secure Cookie with expiry time less than 1 day
我正在使用 Tornado
的 Secure Cookie
功能来实现用户会话。 set_secure_cookie
函数使我们能够创建一个 Cookie,其中可以将 Cookie 有效期的下限设置为 1 天。现在,我需要在一小时内使这些安全 cookie 过期。我可以轻松实现吗?
一种解决方案是在 cookie 值上附加一个时间戳。例如,如果 cookie 值是我的用户 ID(例如 1
),那么我可以创建一个像 1_{current datetime}
这样的 cookie。稍后验证时,我可以拆分 cookie 值并检查 underscore character
之后的日期时间是否在当前时间之前不少于 1 小时。这听起来对我来说可以接受,因为 Tornado 的安全 Cookie 不能被用户修改。
但是,还有比这更优雅的解决方案吗?
使用十进制天数。 12 小时、0.5 天等
实际代码所做的是
datetime.datetime.utcnow() + datetime.timedelta(days=expires_days)
而 timedelta 将一切都转换为秒,因此小数日期 0.4 几乎是一个小时。
阅读带get_secure_cookie
的cookie时也要注意。阅读时应将相同的值传递给 max_age_days
。
我正在使用 Tornado
的 Secure Cookie
功能来实现用户会话。 set_secure_cookie
函数使我们能够创建一个 Cookie,其中可以将 Cookie 有效期的下限设置为 1 天。现在,我需要在一小时内使这些安全 cookie 过期。我可以轻松实现吗?
一种解决方案是在 cookie 值上附加一个时间戳。例如,如果 cookie 值是我的用户 ID(例如 1
),那么我可以创建一个像 1_{current datetime}
这样的 cookie。稍后验证时,我可以拆分 cookie 值并检查 underscore character
之后的日期时间是否在当前时间之前不少于 1 小时。这听起来对我来说可以接受,因为 Tornado 的安全 Cookie 不能被用户修改。
但是,还有比这更优雅的解决方案吗?
使用十进制天数。 12 小时、0.5 天等
实际代码所做的是
datetime.datetime.utcnow() + datetime.timedelta(days=expires_days)
而 timedelta 将一切都转换为秒,因此小数日期 0.4 几乎是一个小时。
阅读带get_secure_cookie
的cookie时也要注意。阅读时应将相同的值传递给 max_age_days
。