如何指定flask应该在哪里存储cookie (flask Session)



我使用Flask在linux服务器上通过Apache2托管基于python的web应用程序。默认情况下,flask会话将其cookie存储在/flask_session/的根目录下。

我想将cookie存储在应用程序文件夹中,即/var/www/webApp/webApp/cookies/

在阅读了flask文档之后,我认为做

app.config["SESSION_COOKIE_PATH"] = "/var/www/webApp/webApp/cookies/"

应该做到这一点,但它不起作用,而

app.config["APPLICATION_ROOT"] = "/var/www/webApp/webApp/"

也不影响任何东西:饼干仍然放在/flask_session/

在这两种情况下,我只在配置后传递Session应用程序:

Session(app)

首先,我们应该澄清flask不在本地存储'cookies'。cookie是一种客户端机制(通常是浏览器),所有的存储都是在客户端进行的,而不是在flask中。

另一点:默认情况下,flask会将所有session数据存储在cookie中。这意味着会话数据也将由客户端存储。有一些插件可以改变这种行为,并将会话数据存储在服务器上,而不是存储在cookie中的。Flask-Session就是这样一个库,看起来这就是你正在使用的(如果不是这种情况,请纠正我)。

有了这个方法,我们可以得到你的实际问题是:"我们如何让Flask将会话数据存储在自定义目录而不是默认目录(/flask_session/)中?">

根据文档,SESSION_FILE_DIR配置是设置该参数的地方:

SESSION_FILE_DIR |会话文件存放的目录。默认使用当前工作目录下的flask_session目录。

所以这段代码应该做你正在寻找的:

app.config["SESSION_FILE_DIR"] = "/var/www/webApp/webApp/"