Какие знаешь способы аутентификации пользователя
Python
Senior
VK
Какие знаешь способы аутентификации пользователя
Ответы
В Python есть несколько способов аутентификации пользователей:
- **Базовая HTTP-аутентификация**
Используется в веб-приложениях через заголовок `Authorization`.
```
from flask import request
from werkzeug.security import check_password_hash
@app.route('/login')
def login():
auth = request.authorization
if auth and check_password_hash(user.password_hash, auth.password):
return "Logged in!"
```
- **JWT (JSON Web Tokens)**
Популярный метод для stateless-аутентификации.
```
import jwt
token = jwt.encode({'user_id': 123}, 'secret', algorithm='HS256')
decoded = jwt.decode(token, 'secret', algorithms=['HS256'])
```
- **OAuth/OpenID Connect**
Используется для интеграции с соцсетями (Google, Facebook).
Библиотеки: `authlib`, `python-social-auth`.
- **Сессии (Cookie-based)**
Хранение данных аутентификации на сервере.
```
from flask import session
session['user_id'] = user.id # Сохранение
user_id = session.get('user_id') # Проверка
```
- **API-ключи**
Простой способ для сервисного взаимодействия.
```
if request.headers.get('X-API-KEY') == 'secret_key':
allow_access()
```
Для безопасности всегда:
- Храните пароли хешированными (bcrypt, Argon2)
- Используйте HTTPS
- Реализуйте CSRF-защиту для сессий