Как на другой форме определить, что пользователь авторизовала по паре логин-пароль на 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 шт):
Чтобы проверить, авторизован ли пользователь, то после заполнения формы авторизации, вы создаёте сессию.
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')