### 🔐 Улучшенная аутентификация для микросервисов #### ✨ Новые возможности - **Универсальная аутентификация**: Добавлена функция `authenticate_request()` для всех handlers - **Множественные источники токенов**: Поддержка Bearer, X-Session-Token, Cookie - **Redis сессии**: Интеграция с Redis для проверки активных сессий - **Безопасная валидация**: Функция `secure_token_validation()` с проверкой TTL и обновлением активности - **Извлечение токенов**: Универсальная функция `extract_token_from_request()` для всех типов запросов #### 🧪 Тестирование - **14 новых тестов**: Полное покрытие новой логики аутентификации - **Производительность**: Тесты производительности (< 1ms на операцию) - **Безопасность**: Тесты защиты от подозрительных токенов - **Граничные случаи**: Тестирование истекших токенов, неверных форматов - **Интеграция**: Тесты с мокированным Redis #### ♻️ Рефакторинг (DRY & YAGNI) - **Устранение дублирования**: Объединена логика аутентификации из upload.rs и user.rs - **Удаление устаревшего кода**: Убраны `extract_user_id_from_token`, `validate_token`, `get_user_by_token` - **Очистка констант**: Удалены неиспользуемые `MAX_TOKEN_LENGTH`, `MIN_TOKEN_LENGTH` - **Упрощение**: Заменена `extract_and_validate_token` на `authenticate_request` #### ��️ Архитектурные улучшения - **Библиотечная цель**: Добавлена `lib.rs` для тестирования модулей - **Модульность**: Четкое разделение ответственности между модулями - **Единообразие**: Все handlers теперь используют одинаковую логику аутентификации #### 📋 Совместимость - **Обратная совместимость**: Все существующие API endpoints работают без изменений - **Graceful fallback**: Работа без Redis (JWT-only режим) - **Множественные форматы**: Поддержка различных способов передачи токенов
This commit is contained in:
18
Cargo.toml
18
Cargo.toml
@@ -1,11 +1,11 @@
|
||||
[package]
|
||||
name = "quoter"
|
||||
version = "0.6.4"
|
||||
version = "0.6.5"
|
||||
edition = "2024"
|
||||
|
||||
[dependencies]
|
||||
futures = "0.3.30"
|
||||
serde_json = "1.0.143"
|
||||
serde_json = "1.0.145"
|
||||
actix-web = "4.11.0"
|
||||
actix-cors = "0.7.0"
|
||||
reqwest = { version = "0.12.23", features = ["json"] }
|
||||
@@ -13,26 +13,30 @@ sentry = { version = "0.42", features = ["tokio"] }
|
||||
uuid = { version = "1.18.0", features = ["v4"] }
|
||||
redis = { version = "0.32.5", features = ["tokio-comp"] }
|
||||
tokio = { version = "1.47.1", features = ["rt-multi-thread", "macros", "fs", "net"] }
|
||||
serde = { version = "1.0.219", features = ["derive"] }
|
||||
serde = { version = "1.0.226", features = ["derive"] }
|
||||
sentry-actix = { version = "0.42", default-features = false }
|
||||
aws-sdk-s3 = { version = "1.104.0", default-features = false, features = ["rt-tokio", "rustls"] }
|
||||
image = { version = "0.25.6", default-features = false, features = ["jpeg", "png", "webp", "tiff"] }
|
||||
aws-sdk-s3 = { version = "1.106.0", default-features = false, features = ["rt-tokio", "rustls"] }
|
||||
image = { version = "0.25.8", default-features = false, features = ["jpeg", "png", "webp", "tiff"] }
|
||||
mime_guess = "2.0.5"
|
||||
md5 = "0.8.0"
|
||||
url = "2.5.7"
|
||||
aws-config = { version = "1.8.6", default-features = false, features = ["rt-tokio", "rustls"] }
|
||||
actix-multipart = "0.7.2"
|
||||
log = "0.4.22"
|
||||
log = "0.4.28"
|
||||
env_logger = "0.11.8"
|
||||
actix = "0.13.5"
|
||||
# libheif-sys = "1.12.0"
|
||||
once_cell = "1.21.3"
|
||||
kamadak-exif = "0.6.1"
|
||||
infer = "0.19.0"
|
||||
chrono = { version = "0.4", features = ["serde"] }
|
||||
chrono = { version = "0.4.42", features = ["serde"] }
|
||||
jsonwebtoken = "9.2.0"
|
||||
base64 = "0.22.1"
|
||||
|
||||
[[bin]]
|
||||
name = "quoter"
|
||||
path = "./src/main.rs"
|
||||
|
||||
[lib]
|
||||
name = "quoter"
|
||||
path = "./src/lib.rs"
|
||||
|
||||
Reference in New Issue
Block a user