Разрабатываю API
для мобильных клиентов на Laravel
. В качестве аутентификации пользователя использую Laravel Passport
и выдаю им Personal Access token
при логине в систему.
Не могу придумать, как реализовать систему подтверждения email
(моб. телефона - не важно) при регистрации пользователя. Необходимо, чтобы подтверждение происходило с помощью четырёхзначного числа
- кода.
Традиционно сайты высылают письмо с кодом активации после отправки регистрационной формы и только после этого активируют учетную запись. Насколько я понимаю, в этом случае запись о пользователе в БД уже будет существовать. Соответственно, пока пользователь не подтвердит ее, теоретически возможно, что за это время придёт другой человек и захочет создать учётку с таким же ящиком. И тут в базе возникает 2 неактивированных записи. Рано или поздно, один из пользователей активирует аккаунт, тогда что делать со вторым? Разумеется я понимаю, что код активации временный, но эту проблему он не решает.
Мне такой подход не очень нравится. Хотелось, чтобы запись о пользователе создавалась только после того, как он подтвердил пароль и зарегистрировался. Как в таком случае устроить логику на сервере и общение с клиентом?
Я примерно надумал следующее:
Насколько безопасен такой подход и какие есть минусы? Что посоветуете?
Пользователь вводит код в поле подтверждения email и заполняет прочие поля формы регистрации
Так не работает, обычно вы сперва все заполняете, если успешно заполнили, то остается ввести только проверочный код, для активации. Поэтому вносить все-же придется :)
Вполне нормальная практика, создать табличку для неактивированных пользователей, например users_not_activated
- там хранить все что пользователь ввел, чтобы перенести из этой таблички в users
, ему нужно ввести правильный код.
Когда он вводит код - ищем по таблице users_not_activated
по полям email-code
, если нашли, то переносим в основную, и сразу-же выполняем еще один запрос на удаление всех записей в users_not_activated
с текущим email
. И все ;)
Если вы боитесь мусора, то я вас успокою, индексированный поиск и при нескольких миллионах будет работать быстро, поэтому проблем нет, все в пределах погрешности. Тем более что вы можете фиксировать время создания записи в эту временную таблицу, и раз в неделю подчищать старые (неактуальные) записи.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Мобильное приложение использует backend сделанный на фраймворке Slim На xampp работает на linux не работает Мобильное приложение пишет на linux valley...
выводится такое дерево, как заполнят у каждого пользователя - два реферала, как дополнять недостающие нфпример словом - "пусто", например у valii78...
Имеется следующий массив, как правильно Нужно подсчитать сумму элементов count, я делаю это циклом: