Как на другой форме определить, что пользователь авторизовала по паре логин-пароль на flask

Есть тестовое приложение без базы данных. Информация хранится в словаре:

users = {'user1': 'password1', 'user2': 'password2'}

Приложение состоит из двух файлов (помимо файлов шаблонизатора). Одни файл отвечает за регистрацию, а второй за главную страницу. Файлы связаны друг с другом. Код файла, отвечающего за регистрацию:

from flask import *


login_controller = Blueprint('login_controller', __name__)

# Пример "базы данных" пользователей
users = {'user1': 'password1', 'user2': 'password2'}

@login_controller.route('/login', methods=['GET', 'POST'])
def login():
    if request.method == 'POST':
        username = request.form['username']
        password = request.form['password']

        # Проверяем существование пользователя и правильность пароля
        if username in users and users[username] == password:
            # Устанавливаем имя пользователя в сессии при успешной аутентификации
            session['username'] = username
            return redirect(url_for('index'))

    return render_template('login.html')

@login_controller.route('/logout')
def logout():
    # Удаляем имя пользователя из сессии при выходе
    session.pop('username', None)
    return redirect(url_for('login'))

Код файла, отвечающего за главную страницу:

from flask import *


from login_web_controller import get_username, login_controller

app = Flask(__name__)
app.config['SECRET_KEY'] = 'your_secret_key'
app.register_blueprint(login_controller)

#просто слова для вывода списком на главную страницу
users = ['first', 'second', 'third']

@app.route('/')
def index():
    if session['username'] not in session:
        # Если информации о пользователе нет в сессии, делаем редирект на страницу авторизации
        return redirect(url_for('login_controller.login'))
    return render_template("index.html", users=users)

if __name__ == '__main__':
    app.run(port=5012)

Проблема возникает в строчке:

if session['username'] not in session:

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


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

Автор решения: Yellow Dollar

Чтобы проверить, авторизован ли пользователь, то после заполнения формы авторизации, вы создаёте сессию.

session['username'] = username

После чего в маршруте логин добавляете условия проверки авторизованности

@login_controller.route('/login', methods=['GET', 'POST'])
def login():
    if 'username' in session:
        return redirect('/')
    if request.method == 'POST':
       username = request.form['username']
       password = request.form['password']

       # Проверяем существование пользователя и правильность пароля
       if username in users and users[username] == password:
        # Устанавливаем имя пользователя в сессии при успешной аутентификации
        session['username'] = username
        return redirect(url_for('index'))

    return render_template('login.html')
→ Ссылка