0

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

Flask-JWT-Extended — это расширение для фреймворка Flask, которое обеспечивает функциональность аутентификации и авторизации с использованием JSON Web Tokens (JWT).

JWT — это компактный и самоописывающийся метод передачи информации между двумя сторонами в виде JSON-объекта. Он состоит из трех частей: заголовка, полезной нагрузки и подписи. В заголовке и полезной нагрузке содержится информация о токене, а подпись используется для проверки целостности данных.

Чтобы начать использовать Flask-JWT-Extended, необходимо установить его с помощью pip:

pip install flask-jwt-extended

После установки необходимо создать экземпляр приложения Flask и настроить его для работы с расширением Flask-JWT-Extended. Для этого создадим файл `app.py`:

from flask import Flask
from flask_jwt_extended import JWTManager

app = Flask(__name__)
app.config['JWT_SECRET_KEY'] = 'secret-key'  # Секретный ключ для подписи токена
jwt = JWTManager(app)

@app.route('/protected')
@jwt_required  # Декоратор для защиты маршрутов, требующих авторизации
def protected():
    return 'This is a protected route'

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

В приведенном выше коде мы создаем экземпляр приложения Flask, устанавливаем секретный ключ для подписи токена и инициализируем объект JWTManager. Затем мы использовали декоратор `@jwt_required`, чтобы защитить маршрут `/protected`, который требует авторизации.

Теперь мы можем создать токен при успешной аутентификации пользователя. Для этого создадим маршрут `/login`:

@app.route('/login', methods=['POST'])
def login():
    username = request.json.get('username')
    password = request.json.get('password')

    # Проверка имени пользователя и пароля
    if username == 'admin' and password == 'admin':
        access_token = create_access_token(identity=username)  # Создание токена
        return {'access_token': access_token}, 200
    else:
        return {'message': 'Invalid credentials'}, 401

Мы получаем имя пользователя и пароль из запроса, проверяем их на валидность и, если они верны, создаем токен с помощью функции `create_access_token`. В этом примере мы используем имя пользователя в качестве идентификатора (identity) токена.

Получив токен, мы можем использовать его для доступа к защищенным маршрутам. Для передачи токена мы добавим заголовок `Authorization` в каждый запрос:

import requests

access_token = 'your-access-token'
headers = {
    'Authorization': f'Bearer {access_token}'
}

response = requests.get('http://localhost:5000/protected', headers=headers)
print(response.text)

В приведенном выше примере мы отправляем GET-запрос на защищенный маршрут `/protected` с заголовком `Authorization`, содержащим токен. В ответ мы получаем сообщение «This is a protected route», что означает успешную авторизацию.

Flask-JWT-Extended предоставляет множество других функций, таких как установка срока действия токена, проверка прав доступа и т.д. Более подробную информацию можно найти в официальной документации Flask-JWT-Extended.

Таким образом, с помощью библиотеки Flask-JWT-Extended вы можете упростить процесс аутентификации и авторизации в веб-приложении Flask, используя JWT.

Tovarystva Radnyk

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

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