Почему после успешной авторизации перенаправляет на страницу авторизации при использовании Flask-Session?

Есть Flask приложение (пример):

import os

from flask import Flask, redirect, url_for, request
from flask_session import Session
from flask_login import (LoginManager, login_required, UserMixin,
                         login_user, logout_user, current_user)

os.replace = os.rename  # python 2.7


class User(UserMixin):
    def __init__(self, id, name):
        self.id = id
        self.name = name


app = Flask(__name__)
SECRET_KEY = 'super secret key'
SESSION_TYPE = 'filesystem'
app.config.from_object(__name__)
Session(app)
login_manager = LoginManager(app)
login_manager.login_view = 'login'

admin = User(0, 'admin')


@login_manager.user_loader
def load_user(user_id):
    return admin


@app.route('/')
@login_required
def index():
    return '''
<h1>Hello World!</h1>
<a href="/logout">Logout</a>'''


@app.route('/login', methods=['GET', 'POST'])
def login():
    if request.method == 'POST':
        if (request.form['username'] != 'admin'
                or request.form['password'] != 'admin'):
            return redirect(url_for('login'))
        login_user(admin)
        return redirect(url_for('index'))
    if current_user.is_authenticated:
        return redirect(url_for('index'))
    return '''
<form action="" method="post">
<input type="text" placeholder="Username" name="username">
<input type="password" placeholder="Password" name="password">
<input type="submit" value="Login">
</form>'''


@app.route('/logout')
def logout():
    logout_user()
    return redirect(url_for('login'))


if __name__ == '__main__':
    app.run(debug=True)

Почему, если инициализировать объект Session из модуля flask_session, то при успешной авторизации (данные пользователя введены корректно и метод login_user был вызван) после перехода на index сразу же происходит перенаправление на login.

127.0.0.1 - - [13/Jul/2021 14:01:56] "POST /login?next=%2F HTTP/1.1" 302 -
127.0.0.1 - - [13/Jul/2021 14:01:56] "GET / HTTP/1.1" 302 -
127.0.0.1 - - [13/Jul/2021 14:01:56] "GET /login?next=%2F HTTP/1.1" 200 -

Проблема пропадает, если для функции index убрать декоратор login_required (или не инициализировать Session).

Python 2.7.


Ответы (0 шт):