Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Python中的SimpleCokie管理令牌生命周期_Python_Cookies_Wsgi - Fatal编程技术网

使用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过期的最佳方法是什么,我知道有两个可能的键:

  • 会话\u cookie['key']['max-age']=“秒时间”
  • 会话\u cookie['key']['expiration']=“未来的日期”
  • 我如何知道令牌是否过期,或者管理过期令牌的最佳方法是什么


    非常感谢

    如果您尝试获取令牌时该令牌不存在,则可以知道该令牌是否已过期

    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-我想他是在问如何设置代币的到期日期。