Я искал решения везде, но не смог решить свою проблему. В настоящее время я запускаю приложение Flask с uWSGI и NGINX в AWS.
Мое flask приложение работает локально 127.0.0.1:5000
. Я попытался добавить secret_key
, как указано в разных вопросах, но это не сработало.
Вот мой код:
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')
Меня всегда перенаправляют на страницу по умолчанию, поскольку session
не хранит значение is_logged_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 приложения в браузере, он зарегистрировал session
cook ie.