使用Python中的SimpleCokie管理令牌生命周期
已使令牌正常工作,设置如下:使用Python中的SimpleCokie管理令牌生命周期,python,cookies,wsgi,Python,Cookies,Wsgi,已使令牌正常工作,设置如下: 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_respo
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,或者例如注销用户,但将用户id cookie的过期日期设置为过去的某个日期(例如负数)
现在,据我所知,您需要一个策略来检测服务器端的过期令牌,这可以通过双重验证来完成。例如,尝试为每个令牌存储一个唯一的标识符,当您读取令牌时,尝试检查它是否已过期。用户也可以操纵他的cookie,因此永远不要盲目信任cookie来存储重要数据或使任何用户id简单验证
我希望我能帮忙
编辑
从
最大年龄=增量秒
可选。“最大使用年限”属性定义了系统的生存期
cookie,以秒为单位。delta seconds值为十进制非整数-
负整数。增量秒过后,客户端
你应该扔掉饼干。值为零表示cookie
应该立即丢弃
来自
Expires指令告诉浏览器何时删除cookie。
从RFC 1123中使用的格式派生,日期在
“Wdy,DD Mon YYYY HH:MM:SS GMT”的格式,[29]表示准确的
此cookie将过期的日期/时间。作为设置cookie的替代方法
作为绝对日期/时间,RFC 6265允许使用
Max Age属性将cookie的过期时间设置为
未来的秒数,相对于浏览器收到
饼干
我建议使用最大年龄,因为这样可以避免设置日期等方面的麻烦。您只需计算一个时间间隔
读多一点,我发现IE不支持最大年龄<9,这意味着expires是首选
这应该会有帮助;-) 这是你的代币吗?只是问一下……令牌是一个格式化的字符串,它包含诸如user_id.Ah normal令牌之类的信息。我认为这是django特有的东西。它与django无关,python中的普通WSGI和使用Cookie。SimpleCookiePreference过期是因为IE不支持max age参见更新的答案谢谢,但我的问题仍然是,没有解释这一点是我的错误,每次用户登录时,它将收到一个新的令牌。但是您想要实现什么呢?请解释一下您的目标或您的用户案例场景@Jimme Kane-我想他是在问如何设置代币的到期日期。