Flask保安不能和多个工人一起工作吗?

2024-10-02 08:15:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在用Flask写一个网站。我使用Flask-Secuirty进行身份验证。我使用nginx + gunicorn来部署它。在

nginx的配置如下:

server{
    listen 80;
    server_name project.example.com;
    location / {
        proxy_pass http://127.0.0.1:5000;

        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forward-For $proxy_add_x_forwarded_for;
    }
}

我用gunicorn -w worker_number -k gevent run:app -p app.pid -b 127.0.0.1:5000来启动gunicorn。在

如果worker_number1,则一切正常。在

如果worker_number大于1,就像3,我不能用Flask-Security登录。在

服务器的输出显示登录的post请求是200。但是服务器再次将我重定向到登录页面。在

经过一番寻找,我找不到这件事的直接原因。我想这可能是由于SERVER_NAME烧瓶的配置或者{}的误用引起的。在

以前有人遇到过这种情况吗?请给我一些建议。在


Tags: 服务器身份验证appflasknumberserver网站部署
3条回答

我在flask_登录时遇到了类似的问题,当worker_number大于1时,我无法登录。在

我的app.secret_密钥设置为os.urandom公司(24),所以每个工人都会有另一个密钥。在

设置app.secret_密钥一根绳子解决了我的问题。在

只需使用固定密钥。
使用以下命令生成。
$ openssl rand -base64 <desired_length>

如果您不想在源代码中硬编码密钥,而出于安全目的,您不应将其硬编码。
设置一个环境变量并获取它。在

import os

#   snip  

app.config["SECRET_KEY"] = os.environ.get("FLASK_APP_SECRET_KEY")

使用类似于Flask-Session的内容并将Redis用作会话存储。我不确定Flask安全性是如何工作的,但我假设它依赖于Flask会话,在这种情况下,它将解决用户会话在应用服务器之间切换的问题。在

相关问题 更多 >

    热门问题