Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 烧瓶会话值不会保存在不同的请求上_Python_Amazon Web Services_Nginx_Flask_Uwsgi - Fatal编程技术网

Python 烧瓶会话值不会保存在不同的请求上

Python 烧瓶会话值不会保存在不同的请求上,python,amazon-web-services,nginx,flask,uwsgi,Python,Amazon Web Services,Nginx,Flask,Uwsgi,我到处都在寻找解决办法,但解决不了我的问题。 我目前正在AWS中运行带有uWSGI和NGINX的Flask应用程序 我的烧瓶应用程序正在本地运行127.0.0.1:5000。 我尝试添加了不同问题中提到的密钥,但没有成功 以下是我的一些代码: app.py from flask import Flask, request, redirect, url_for, session, abort from flask_session import Session app = Flask(__name

我到处都在寻找解决办法,但解决不了我的问题。 我目前正在AWS中运行带有uWSGI和NGINX的Flask应用程序

我的烧瓶应用程序正在本地运行
127.0.0.1:5000
。 我尝试添加了不同问题中提到的
密钥
,但没有成功

以下是我的一些代码:

app.py

from flask import Flask, request, redirect, url_for, session, abort
from flask_session import Session

app = Flask(__name__)
app.config["SESSION_TYPE"] = 'filesystem'
app.config["SESSION_FILE_DIR"] = '/var/www/test/session'

Session(app)

@app.route('/auth/login', methods=['POST'], strict_slashes=False)
def login():
    # did some validations here
    session.permanent = True
    session['is_logged_in'] = True
    return redirect(url_for('home'))

@app.route('/auth/home', methods=['GET'], strict_slashes=False)
def home():
    if session.get('is_logged_in') == None:
        return redirect('/') # will return to default page
    return render_template('home.html')

if __name__ == '__main__':
    app.run(host='0.0.0.0')
我总是被重定向到默认页面,因为
会话
没有存储“is\u logged\u in”值。但是它确实存储了
{permanent:True}
,我相信这是从
session.permanent=True
行中得到的

nginx.conf中的配置:

location /auth {
    rewrite ^/(.+) $1 break;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $http_host;
    proxy_redirect off:
    proxy_pass http://127.0.0.1:5000/$1$is_args$args;
}
如果有帮助,我的uWSGI正在
socket=120.0.0.1:5000中运行,我正在使用
protocol=http


当我在浏览器中检查应用程序cookie时,它注册了一个
会话
cookie。

如果会话['is logged\u in']==False,请尝试使用

并在开始时将会话记录为false。在
会话(应用程序)
之后的顶部添加此
会话['is\u logged\u in']=False

编辑:

检查会话中是否存在“登录”。 登录时,请执行以下操作:

if 'logged_in' in session:
    #User logged in 
在注销时,请执行此操作

session.pop('logged_in')

经过一些枯燥的研究,我发现我只需要将
plugin=python36
包含在我的uwsgi.ini中,它来自
uwsgi-plugin-python36
(rpm)。

您好,谢谢您的回复。这给了我一个
运行时错误:在请求上下文之外工作。我只能与活动HTTP请求中的会话进行交互。请检查你好,再次感谢。我的问题是,当我转到另一个请求时,在
会话
中设置的值没有保存
是否已登录\u
在会话中从未出现您可以使用我的方法来尝试登录用户。我正在尝试使会话正常工作。由于会话中从不存在
is\u logged\u
如果会话中“is\u logged\u in:
将永远不会通过。。