Я создал базовое веб-приложение, используя Flask. У меня есть обработчик маршрута testlogin в моем run.py (который запускает приложение фляги). Когда я запускаю его на своем локальном хосте, testlogin работает нормально, но когда я размещаю его на сервере Nginx экземпляра AWS EC2 с использованием gunicorn, он не работает согласованно. То есть для приведенного ниже кода я получаю следующие результаты:
Результаты на локальном хосте:
Когда я пытаюсь войти в первый раз, я получаю: Пользователь {username} вошел в систему
Когда я пытаюсь снова войти в систему, я получаю: Вы уже вошли как {username}
Результаты на рабочем сервере:
Когда я пытаюсь войти в систему дляв первый раз я получаю: Пользователь {username} вошел в систему
Когда я пытаюсь войти снова, я получаю: Пользователь {username} вошел в систему (вместо того, чтобы Вы вошли как {username)}) - то есть current_user.is_authenticated терпит неудачу
Снова, когда я пытаюсь, я получаю: вы уже вошли как {uername}
Итак, поведение неоднозначно в нескольких испытаниях.
Все остальные мои веб-страницы работают нормально, кроме этой страницы входа - поэтому я предполагаю, что мой сервер работает без каких-либо проблем. Это случилось на моем веб-сайте, который я запускаю: http://boredmember.in/testlogin Но работает нормально на 127.0.0.1:8000/testlogin
@app.route('/testlogin',methods=['GET','POST'])
def testlogin():
form=LoginForm()
if current_user.is_authenticated:
return f"You are already logged in as {current_user.username}"
elif request.method=="POST":
if form.email.data:
if form.password.data:
user=User.query.filter_by(email=form.email.data).first()
if user:
if bcrypt.check_password_hash(user.password,form.password.data):
if login_user(user):
return f"User {current_user.username} loggedin"
else:
return "User exists but not loggedin"
return "User exists and Password Matches"
else:
return "User exists but Password doesn't match"
else:
return "User Does not exist"
return f"Password:{form.password.data}"
else:
return "Password failed"
return f"Email: {form.email.data}!"
else:
return "Email failed"
return "POST Verified"
#return render_template('login.html',title="Home",_external=True,form=form)
return "GET Verfied"
Такое поведение было замечено раньше? Какие меры предосторожности или меры я должен предпринять?
Я хотел бы иметь последовательное поведение на производстве и локальном хосте ... Что мне делать?