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

  • session_cookie ['key'] ['max-age'] =“秒钟时间”
  • session_cookie ['key'] ['expiration'] =“未来的日期”
  • 我如何知道令牌是否过期或者什么是管理过期令牌的最佳方式?

    非常感谢!


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

    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