flask中的session解密和更改默认保存方式
注意:secret_key存在的意义是防止用户篡改session的(和jwt的秘钥类似)
flask的session是通过secret_key加密之后存储到cookie里面的,键为session,值为session的加密值
该cookie通过字符串的分割之后,分成了三部分:内容序列化+时间+防篡改值
参考:https://blog.csdn.net/yueguanghaidao/article/details/40016235
from itsdangerous import * # 从浏览器中复制过来的cookie值 session_str = 'eyJhZ2UiOjEyMywibmFtZSI6Im9sYWYifQ.YFC3Aw.Up60dP3IAkTEloNX1CWlA91fpc4' data, timestamp, secret = session_str.split('.') print(base64_decode(data))
flask中session的默认存储位置是在客户端cookie里面,我们可以通过flask_session去更改其存储位置(存储到服务端)
可以存储到 本地文件、redis、memcached,MySQL中等等,具体可参考flask_session文档
注意:在flask_session中指定将session存储到filesystem时,有个坑,请将 SESSION_FILE_THRESHOLD 值设置大一些,或者换种方式存储
默认SESSION_FILE_THRESHOLD = 500,如果值过小,可能会导致登录状态异常清除。