关于 Flask_session 插件的FileSystem存储方式,有个问题
flask吧
全部回复
仅看楼主
level 1
davidssssss 楼主
关于 Flask_session 插件的FileSystem存储方式,有个问题请教:
我用 Flask_session 插件的FileSystem存储方式 在 Windows下组织SESSION。
app.config['SESSION_TYPE'] = 'filesystem'
app.config['SESSION_FILE_DIR'] = '/WorkSpace_Python/python_flask/sessions/
app.config['SESSION_FILE_THRESHOLD'] = 500
其他参数默认。
Session(app)
用一个 取得验证码登录的例子中测试SESSION,发现一个问题:
verify.py 生成验证时CODE为:1579,后,用 session["verrify_code"]=code, 保存,然后在 verify.py 中
用code= session["verrify_code"] 可以取到 : 1579, 但是,填入用户名密码,验证码后提交(AJAX提交),显示验证码不对,调试发现: 在login.py 中 用code= session["verrify_code"] 却是一个旧值 5033,刷新页面,验证码变了,但LOGIN提交后这个值读出来一直不变(5033). 查看了FLASK_SESSION 源码,感觉是 写入SESSION时出问题。SESSION目录下出现很多文件:
不知道哪位大侠能支出问题出在哪里?谢谢
2020年06月17日 06点06分 1
level 1
davidssssss 楼主
经过分析FLASK_SESSION源代码,问题已解决, 共享如下:
# 需要修改 cachelib 中 file.py 文件 中的 def set(self, key, value, timeout=None, mgmt_element=False): 方法:
#os.rename(tmp,filename) #原来的代码,替换为下列代码:
###########################原来的代码处理Windows文件时有问题的
import shutil #文件处理包
tmp=str.replace(tmp,'\\','\\\\') #需要用\\来代替路径中的\
shutil.copy(tmp,filename) #复制为正式的SESSION文件
os.remove(tmp) #删除临时文件
#########################################################
修改后,文件系统SESSION在WIndow下工作正常了。
2020年06月17日 14点06分 3
1