АВТОРИЗАЦИЯ FLASK JWT

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

JWT - это стандарт кодирования веб-токенов, которые могут быть переданы между клиентом и сервером. Каждый токен состоит из трех частей: заголовка, полезной нагрузки и подписи. Заголовок содержит информацию о том, как алгоритм подписи должен использоваться. Полезная нагрузка содержит информацию, которая будет передана от клиента к серверу. Подпись подтверждает, что токен был выдан авторизованным пользователем.

Для использования Flask-JWT необходимо установить его с помощью pip:

pip install Flask-JWT

Для начала необходимо импортировать необходимые модули:

from flask import Flask, jsonify, requestfrom flask_jwt import JWT, jwt_required, current_identityfrom werkzeug.security import safe_str_cmp

Затем определяются функции загрузки пользователя из базы данных, проверки пароля и создания JWT-токена:

def authenticate(username, password): user = User.find_by_username(username) if user and safe_str_cmp(user.password.encode('utf-8'), password.encode('utf-8')): return userdef identity(payload): user_id = payload['identity'] return User.find_by_id(user_id)def jwt_payload_handler(identity): return {'identity': identity.id}

Функция "authenticate" по переданному имени пользователя и паролю ищет пользователя в базе данных. Если пользователь найден и пароль верный, то функция возвращает пользователя. Функция "identity" по переданному JWT-токену находит пользователя в базе данных. Функция "jwt_payload_handler" генерирует JWT-токен для пользователя.

Теперь можно создать экземпляр JWT, определить две обязательные конечные точки: /auth и /protected, и определить функции для этих конечных точек:

app = Flask(__name__)app.config['SECRET_KEY'] = 'super-secret'jwt = JWT(app, authenticate, identity)@app.route('/auth', methods=['POST'])def login(): data = request.get_json() username = data['username'] password = data['password'] user = authenticate(username, password) if user: access_token = jwt.jwt_encode_callback(jwt_payload_handler(user)) return jsonify({'access_token': access_token.decode('utf-8')}), 200 return jsonify({'message': 'Invalid credentials'}), [email protected]('/protected', methods=['GET'])@jwt_required()def protected(): return jsonify({'user_id': current_identity.id}), 200

Функция "login" принимает POST-запрос с JSON-объектом, содержащим имя пользователя и пароль. Если пользователь найден и пароль верный, функция возвращает JWT-токен. Функция "protected" принимает GET-запрос с JWT-токеном и возвращает идентификатор пользователя. Для доступа к этой функции требуется авторизация с помощью JWT-токена.

REST API (Python): Авторизация. Flask-JWT-Extended

A Tutorial on How to Implement Flask JWT Authentication #flask #jwt #authentication

REST API (Python): Авторизация - часть 2. Flask-JWT-Extended

FastAPI - A python framework - Full Course

User Authentication in Flask App using JWT [ JSON Web Token ]

Flask (Python) - (Flask JWT Extended) Auth Users and Protecting Routes

Authenticating a Flask API Using JSON Web Tokens

Python Flask JWT Ext Tutorial

Basic Authentication \u0026 JWT - Flask and Python Backend #2

BLGPG-F9FE0941BAE8-24-11-23-21

Новые материалы: