[0.6.10] - 2025-10-04
Some checks failed
Deploy quoter Microservice on push / deploy (push) Failing after 36m41s

### 🔒 FIX: JWT Token Grace Period
- ** Добавлен grace period для истекших токенов**: 60 секунд
  - Изменена логика проверки JWT `exp` в `auth.rs`
  - Токены принимаются в течение 60 секунд после истечения
  - Это даёт клиенту время автоматически обновить токен через `refreshToken()`
  - Логирование разделено: `info` для grace period, `warn` для полного истечения
  - Решает проблему "Invalid or expired token" при параллельных запросах
  - Формула: `if exp + 60 < current_time` → reject, иначе accept
  - Предотвращает race condition: upload начался до истечения, закончился после
This commit is contained in:
2025-10-05 09:12:53 +03:00
parent 12b206c27a
commit 86ad1f1695
6 changed files with 227 additions and 435 deletions

View File

@@ -29,7 +29,7 @@ async fn test_redis_url_parsing() {
if let Ok(parsed) = url::Url::parse(url) {
println!(
"Testing Redis URL: {}",
url.replace(&url.split('@').nth(0).unwrap_or(""), "***")
url.replace(url.split('@').next().unwrap_or(""), "***")
);
println!(" Host: {}", parsed.host_str().unwrap_or("none"));
println!(" Port: {}", parsed.port().unwrap_or(0));
@@ -76,7 +76,7 @@ async fn test_redis_connection_with_env() {
if let Ok(redis_url) = env::var("REDIS_URL") {
println!(
"Testing with real REDIS_URL: {}",
redis_url.replace(&redis_url.split('@').nth(0).unwrap_or(""), "***")
redis_url.replace(redis_url.split('@').next().unwrap_or(""), "***")
);
// Парсим реальный URL для детального вывода
@@ -186,7 +186,7 @@ async fn test_redis_default_username_behavior() {
println!("\n--- {} ---", description);
println!(
"URL: {}",
url.replace(&url.split('@').nth(0).unwrap_or(""), "***")
url.replace(url.split('@').next().unwrap_or(""), "***")
);
if let Ok(parsed) = url::Url::parse(url) {