Flask - Как требовать логин только для почтовых запросов - PullRequest
1 голос
/ 25 мая 2020

Я работаю в Flask, и я хочу разрешить пользователям вводить информацию в форму без входа в систему, но от них требуется вход, если они отправят форму. После входа должно получиться так, как если бы пользователь только что отправил форму (им не нужно повторно вводить какую-либо информацию).

Для хранения их информации я использовал такие сеансы. Он работает хорошо:

if request.method == "POST":

    if "arg1" not in session.keys() and "arg2" not in session.keys():
            session["arg1"] = request.form.get('arg1')
            session["arg2"] = request.form.get('arg2')

Однако у меня проблемы с частью, необходимой для входа в систему. Я знаю, что могу использовать @login_required на всем маршруте, но я просто хочу, чтобы @login_required применялся, если запрос является методом публикации. Я пробовал просто добавить @login_required после проверки, является ли метод почтовым запросом, но он не работает.

Мой маршрут входа выглядит так:

@app.route("/login", methods = ["POST", "GET"])
def login():

    #log user in

    return redirect(request.args.get("next") or url_for('index'))

Кажется, мне нужны две вещи.

1: применить @login_required исключительно к почтовому запросу.

2: Чтобы request.args.get ("next") вызывал почтовый запрос, а не получал запрос

Как я мог go выполнить эти две вещи и достичь своей цели?

Спасибо!

1 Ответ

0 голосов
/ 27 мая 2020

Проложите свои маршруты. 1 для GET и 1 для POST

@app.route("/login", methods = ["GET"])
def get_login():
    return stuff


@app.route("/login", methods = ["POST"])
@login_required
def post_login():
    return stuff

Здесь можно использовать несколько шаблонов, но этот самый простой.

...