@DeniSidorenko

Принцип работы авторизации по смс, NODE JS?

Сделал простую авторизацию и регистрацию на MERN ( Node JS + React).
Сейчас появилось идея сделать простую регистрацию авторизацию лишь по средствам sms( информацию о себе, е-майл пользователи смогут добавить в личном кабинете) .

Идея такова, сделать регистрацию лишь с одним полем по SMS

Пользователь вводит свой телефон, и на backend генерируется код из 6 цифр, который посредством api смс сервиса отправляется на номер. В браузере же ( на стороне фронта) появляется форма с вводом этих 6 символов и чтением, так же браузер ожидает что для этой сессии, будет введен код. Для безопасности думаю его стоит прогнать через bcrypt, и когда пользователь вводит код, то через bcrypt.compare проверить действителен ли код.
Единственный вопрос, по поводу сессии. Не могу понять как сделать что бы проверка была именно внутри одной сессии, а не другой. Или может моя логика вовсе не верна и стоит сделать авторизацию по другому?
  • Вопрос задан
  • 920 просмотров
Решения вопроса 1
Babayka_od
@Babayka_od
Full-stack developer
При отправке телефона на бекенд можно делать запись в БД вида
{
  "id": "uuid,
  "challenge": "random string",
  "otp": "six-digit code", // для otp бессмысленно использовать bcrypt, потому что этот код одноразовый и у него малое время жизни
  "expires_in": timestamp
}

После отправить otp пользователю и записать challenge в cookie
При отправке otp на бекенд нужно достать challenge из cookie, найти по этому challenge запись в базе и сверить код
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы