已经有令牌正常工作,这是这样设置的:
session_cookie = SimpleCookie()
session_cookie['key'] = any_string_value
session_cookie['key']["Path"] = '/'
headers = []
headers.extend(("set-cookie", morsel.OutputString())
for morsel
in session_cookie.values())
start_response(status, headers)
我也能读取令牌并提取我需要的信息:
# Get cookies
cookies = request.get_cookies()
# Get current token from cookies
token = cookies['token'].value
现在,设置cookie过期的最佳方法是什么,我知道有两个可能的键:
我怎么知道令牌是否过期或者什么是管理过期令牌的最佳方式?
非常感谢!
答案 0 :(得分:3)
如果令牌在您尝试获取时不存在,则可以知道令牌是否已过期。
token = cookies['token'].value #this will not exist
当到期日期过去时,浏览器会删除Cookie以及与之相关的所有内容。
这种方式在许多实现中你甚至可以删除cookie或者例如注销用户,但是将user_id cookie的过期日期设置为过去的某个(例如负数)。
据我所知,您需要一个策略来检测过期的令牌服务器端,并且可以通过双重验证来完成。例如,当您读取令牌时尝试为每个令牌和服务器端存储唯一标识符,以尝试检查它是否已过期。用户也可以操纵他的cookie,因此不要盲目地信任cookie来存储重要数据或进行任何user_id简单验证。
我希望我帮助过。
修改强>
来自rfc2109
最大年龄=Δ-秒 可选的。 Max-Age属性定义了生命周期 饼干,在几秒钟内。 delta-seconds值是十进制非 负整数。经过delta-seconds秒后,客户端 应该丢弃cookie。值为零表示cookie 应立即丢弃。
Expires指令告诉浏览器何时删除cookie。 源自RFC 1123中使用的格式,日期在 形式为“Wdy,DD Mon YYYY HH:MM:SS GMT”,[29]表明确切 此cookie过期的日期/时间。作为设置cookie的替代方案 到期为绝对日期/时间,RFC 6265允许使用 Max-Age属性将cookie的到期时间设置为 相对于浏览器收到的时间,将来的秒数 cookie中。
我建议使用max-age,因为从设置日期等方面省去了一些麻烦。你只需计算一个间隔。
再读一点我发现IE<不支持max-age。 9意味着过期是首选
那应该有所帮助; - )