使用Python中的SimpleCookie管理令牌使用期限
已经得到令牌正确工作,这是这样设置的:
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设置到期的最佳方法是什么,我知道有两个可能的键:
我如何知道令牌是否过期或者什么是管理过期令牌的最佳方式?
非常感谢!
如果令牌在您尝试获取时不存在,您可以知道该令牌是否已过期。
token = cookies['token'].value #this will not exist
当到期日期过去时,浏览器会删除cookie以及与此相关的所有内容。
通过这种方式,在很多实现中,您甚至可以删除cookie或例如注销用户,但将user_id cookie的到期日期设置为过去的某个值(例如负数)。
现在据我所知,你需要一个策略来检测到过期的令牌服务器端,这可以通过双重验证来完成。 例如,当您读取令牌时,尝试为每个令牌和服务器端存储唯一标识符,尝试检查它是否已过期。 用户也可以操纵他的cookies,因此不要盲目地信任cookie来存储重要数据或进行任何user_id简单验证。
我希望我能帮上忙。
编辑
来自rfc2109
Max-Age = delta-seconds可选。 Max-Age属性定义了cookie的生命周期,以秒为单位。 delta-seconds值是一个十进制的非负整数。 在经过三秒钟秒后,客户端应丢弃该cookie。 值为零表示应该立即丢弃cookie。
并从维基HTTP Cookie
Expires指令告诉浏览器何时删除cookie。 衍生自RFC 1123中使用的格式,日期以“Wdy,DD Mon YYYH HH:MM:SS GMT”[29]的形式指定,指示此Cookie将过期的确切日期/时间。 作为将cookie过期设置为绝对日期/时间的替代方法,RFC 6265允许使用Max-Age属性将cookie的过期设置为相对于浏览器接收cookie的时间为将来的秒数。
我会建议使用max-age,因为从设置日期等方面可以节省一些麻烦。你只需计算一个时间间隔。
再读一点,我发现IE不支持max-age <9,这意味着过期是首选
最大年龄与过期
这应该有所帮助;-)
链接地址: http://www.djcxy.com/p/11651.html上一篇: Manage token life duration with SimpleCookie in Python
下一篇: Web Api ModelState validation is ignoring the DisplayAttribute