0

Как создать и использовать веб-приложение с аутентификацией и авторизацией в Flask?

Flask — это микрофреймворк для создания веб-приложений на языке Python. В этой статье мы рассмотрим, как создать и использовать веб-приложение с аутентификацией и авторизацией в Flask.

Для начала установим Flask с помощью следующей команды:

«`bash
pip install Flask
«`

После установки Flask, создадим файл app.py и добавим следующий код:

«`python
from flask import Flask, render_template, request, redirect, url_for, session
from functools import wraps

app = Flask(__name__)
app.secret_key = «your_secret_key»

def login_required(f):
@wraps(f)
def decorated_function(*args, **kwargs):
if ‘logged_in’ not in session:
return redirect(url_for(‘login’, next=request.url))
return f(*args, **kwargs)
return decorated_function

@app.route(‘/’)
@login_required
def home():
return render_template(‘home.html’)

@app.route(‘/login’, methods=[‘GET’, ‘POST’])
def login():
if request.method == ‘POST’:
if request.form[‘username’] == ‘admin’ and request.form[‘password’] == ‘admin’:
session[‘logged_in’] = True
return redirect(url_for(‘home’))
else:
return render_template(‘login.html’, error=’Invalid username or password’)
return render_template(‘login.html’)

@app.route(‘/logout’)
@login_required
def logout():
session.pop(‘logged_in’, None)
return redirect(url_for(‘login’))

if __name__ == ‘__main__’:
app.run(debug=True)
«`

Давайте разберем этот код по частям:

1. Мы импортируем необходимые модули: Flask для создания и управления веб-приложением, render_template для отображения HTML-шаблонов, request для работы с HTTP-запросами, redirect и url_for для перенаправления пользователя на другую страницу, а также session для хранения данных сессии пользователей.
2. Мы создаем экземпляр класса Flask и указываем секретный ключ для шифрования данных сессии.
3. Мы определяем декоратор login_required, который будет использоваться для защиты маршрутов, требующих аутентификации и авторизации. Этот декоратор проверяет, авторизован ли пользователь, и перенаправляет его на страницу входа, если нет.
4. Мы определяем маршрут главной страницы (/), который требует аутентификации с помощью декоратора login_required. Возвращаемое значение функции home будет отображаться в шаблоне home.html.
5. Мы определяем маршрут страницы входа (/login), который принимает запросы GET и POST. Если метод запроса POST, мы проверяем введенные учетные данные и, если они верны, устанавливаем значение logged_in в True в сессии пользователя и перенаправляем его на главную страницу. Если учетные данные неверны, мы отображаем шаблон login.html с сообщением об ошибке. Если метод запроса GET, мы просто отображаем шаблон login.html.
6. Мы определяем маршрут выхода (/logout), который требует аутентификации с помощью декоратора login_required. При переходе на этот маршрут мы удаляем значение logged_in из сессии пользователя и перенаправляем его на страницу входа.
7. Наконец, мы запускаем приложение, если файл запускается напрямую (а не импортируется как модуль).

Теперь, чтобы использовать этот код, создадим два HTML-шаблона: home.html и login.html. В home.html добавим текст «Добро пожаловать, вы вошли в систему!», а в login.html добавим форму для ввода учетных данных:

«`html



Добро пожаловать, вы вошли в систему!

Выйти




Вход

{% if error %}

{{ error }}

{% endif %}






«`

Теперь, когда мы запускаем наше веб-приложение с помощью команды `python app.py`, мы можем открыть браузер и перейти по адресу http://localhost:5000/. Мы увидим страницу входа, где мы можем ввести учетные данные и войти в систему. После успешной аутентификации мы будем перенаправлены на главную страницу, где будет отображаться сообщение «Добро пожаловать, вы вошли в систему!». На этой странице также будет ссылка для выхода из системы.

Это простой пример веб-приложения с аутентификацией и авторизацией в Flask. Вы можете дополнить его добавлением различных функций, например, регистрации новых пользователей, ограничения доступа к определенным страницам только для авторизованных пользователей и т.д. Flask предоставляет множество возможностей для создания безопасных веб-приложений, и вы можете настроить его по своему усмотрению.

Tovarystva Radnyk

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *