Серия «Как Авито, только для геймеров.»

0

Разработка доски объявлений для геймеров. Часть 2.1 Авторизация пользователей

Серия Как Авито, только для геймеров.

Схема авторизации достаточно простая:
1. Запрашиваем логин и контактную информацию номер телефона или почта
2. Формируем код
3. На основе того что ввели и сгенерировали формируем JWT токен, в claims кладем логин, контакты, hmac кода из сообщения, и таймштамп со временем возможности следующей отправки (для ограничения количества отправок)
4. Отправляем код
5. В UI форма переключается на шаг с вводом кода и ожидаем ввода
6. Извлекаем claims из куки, на основе введенного кода формируем hmac и сравниваем его с тем, что в токене в куках
7. Если все совпадает, то регистрируем пользователя и выдаем пару JWT токенов для аутентификации и обновления токена.

Со входом в аккаунт такая же система, но нужен только login.

Примерно так это выглядит на момент написания поста

Форма регистрации

Форма регистрации

Форма ввода кода

Форма ввода кода

Код для входа (пока сделан в логах)

Код для входа (пока сделан в логах)

После входа в профиль

После входа в профиль

На момент написания статьи коды авторизации отображались в логах. Это временное решение пока не настроено smtp и сервисы для отправки.

Возможно для авторизации я сделаю немного другую стратегию, чтобы пользователи вводили только логин и TOTP-код (код базированный на времени, как в google authenticator). Это позволит сэкономить на отправке SMS-кодов (которые не бесплатны в отличие от email и TOTP).

Показать полностью 4
0

Разработка доски объявлений для геймеров. Часть 2

Серия Как Авито, только для геймеров.

Ок, далее хочу выстроить спецификации в swagger. Наброски того как и что делать уже в блокноте. Что нам нужно делать:
- Общую доску
- Доски пользователей и профиль (короче говоря, перенимаем у инсты паттерн, где контент идет сразу после блока с информацией профиля)
- Авторизацию и регистрацию

Дополнительно заложим возможность делать запросы и отвечать на них (принимать/отклонять)

Сначала я хочу описать общие части спецификации вручную для того, чтобы выстроить эндпоинты в интуитивно понятной структуре, а затем через ассистента выделить их этого общие ответы, дополнить блоки secure, tag, response и другие элементы, с которыми ИИ справится лучше человека.

2

Разработка доски объявлений для геймеров. Часть 1

Серия Как Авито, только для геймеров.

- Что не позвал?
- Да я откуда знал что у тебя эта игра вообще есть?

С этого началась вся эта история. Идея была проста, когда я планирую во что-то поиграть надо все рассказывать. Подумал, может сделать объявления? Подумано - сделано. Через час я сижу с листком бумаги, открытым вики-редактором (своя база знаний на сетевом хранилище, прикиньте). Мусорка уже наполовину заполнена бумажками с идеями (уж слишком мало ограничений для небольшого приложения). Часа в два ночи уже имел согласованный с самим собой функционал (ну это с перерывами на 3 часа попить чай, естественно). Следующий шаг - спецификации API и детальное проектирование процессов.

Отличная работа, все прочитано!

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества