Flask 框架之cookie超时时间设置(踩坑!)

问题引入

Flask 的配置文件config.py中,写入

 PERMANENT_SESSION_LIFETIME = timedelta(days=7)

这表示 session的过期时间为7天

但刚登录没多久,关闭浏览器,再打开,却发现仍需重新登录。打开 F12 开发者工具,找到相应存储的cookie如下(Firefox,图片如果看不清,可以单独查看图像,效果会比较好)

cookie信息截图

可以看到名称为session的键的过期时间为当前会话,即浏览器关闭后自动删除(页面关闭不会删除)

解决方案

app.config 配置有限,很多相关的配置,需要在session实例配置,需要设置参数PERMANENT,有效期才能生效

即加入如下语句(from flask import session)

session.permanent = True

然后再次登录,继续打开 F12 开发者工具,找到相应存储的cookie如下(图片如果看不清,可以单独查看图像,效果会比较好)

cookie信息

可以看到名称为session的键的过期时间为已经不再是当前会话了,而是变成了 PERMANENT_SESSION_LIFETIME  所设置的session过期时间

cookie 和 session 的区别

cookie —— 运行在客户端,理论上没有大小限制,和服务器的内存大小有关。有安全隐患,通过拦截或本地文件找到cookie后可以进行攻击

session —— 运行在服务器端,有大小限制以及浏览器保存cookie的个数也有限制。保存在服务器端上会存在一段时间才会消失,如果session过多会增加服务器的压力

评论或私信站长


  1. #该文章暂时没有评论