АВТОРИЗАЦИЯ 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
Новые материалы: