Initial commit: VoIdeaAI - voice-first AI idea assistant
This commit is contained in:
@@ -0,0 +1,59 @@
|
||||
# Выбор схемы аутентификации
|
||||
|
||||
---
|
||||
|
||||
## Decision Tree
|
||||
|
||||
```mermaid
|
||||
graph TD
|
||||
A[Схема auth?] --> B{Нужен вход через соцсети?}
|
||||
B -->|Нет| C[Email + пароль]
|
||||
B -->|Да| D{OAuth2}
|
||||
D --> E[Выбрать провайдеров]
|
||||
C --> F[Выбрать JWT или Session]
|
||||
F -->|SPA/PWA| G[JWT + refresh token]
|
||||
F -->|SSR| H[Session + cookie]
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Варианты
|
||||
|
||||
### Email + пароль
|
||||
| | |
|
||||
|---|---|
|
||||
| **Плюсы** | Простота, не зависит от third-party, полный контроль |
|
||||
| **Минусы** | Пользователь должен помнить пароль, риск утечки |
|
||||
| **Хэширование** | bcrypt через passlib |
|
||||
|
||||
### OAuth2 (Яндекс, Google, GitHub, Apple)
|
||||
| | |
|
||||
|---|---|
|
||||
| **Плюсы** | Удобство для пользователя, нет паролей на нашей стороне |
|
||||
| **Минусы** | Зависимость от провайдера, нужны client_id/secret, нужен публичный URL для callback |
|
||||
| **Схема** | Один пользователь = один провайдер (нельзя привязать два) |
|
||||
|
||||
### JWT vs Session
|
||||
|
||||
| | JWT | Session |
|
||||
|---|---|---|
|
||||
| **Хранение** | На клиенте (localStorage) | На сервере (Redis/БД) |
|
||||
| **Масштабирование** | Не нужна общая session storage | Нужен Redis |
|
||||
| **Отзыв токена** | Сложно (до expire) | Мгновенно |
|
||||
| **SPA/PWA** | Идеально | Сложнее |
|
||||
|
||||
---
|
||||
|
||||
## Рекомендация
|
||||
|
||||
**Email + пароль + JWT** для старта.
|
||||
OAuth2 добавить перед production (если нужен).
|
||||
JWT с refresh token для SPA/PWA, session для SSR.
|
||||
|
||||
---
|
||||
|
||||
## [ASK]
|
||||
|
||||
- Нужен ли вход через соцсети? (рекомендация: Яндекс для РФ, Google для международных)
|
||||
- JWT или Session? (рекомендация: JWT + refresh token)
|
||||
- Сколько провайдеров OAuth? (рекомендация: 1-2, не больше)
|
||||
Reference in New Issue
Block a user