Где и как лучше всего сохранять отправленный клиенту проверочный смс код для регестрации?
Сохранять я имею в виду, для проверки с кодом введенным клиентом
Adamos, нигде, для регестрации нужен только телефон, вводишь телефон и на него приходит смс с кодом. Пока код не будет проверен, то никаких записей в БД нет
Demian1, то есть вы не предполагаете, что у вас кто-то будет регистрироваться, и считаете этот случай слишком редким, чтобы заводить запись в надежде на успех?
Demian1, понятия не имею, как на озоне, так что понятнее не стало.
Вам клиент дает телефон. Вы настолько верите этому клиенту, что тратитесь на CMC-ку, но не настолько, чтобы записать этот телефон с проверочным кодом в базу? Сразу туда, куда он попадет зарегистрированным, но с флагом "ждет подтверждения"? Тем более, что он через месяц забудет пароль от вашего недо-Озона, и вы ему будете снова слать CMC-ку, под код которой (как удачно-то) уже есть поле в базе...
Я пришёл к выводу, что достаточно хранить в сессии. Так как с другого устройства верификацию не должны проходить, за исключением случаев верификации по ссылке.
pp_k, а что тут такого?
Хотите поэкономить - удаляйте записи после того как пользователь с данной СМС зарегистрировался. Еще больше сэкономить - ставить временные метки, и удалять старые записи после истечения определенного времени.
Только в тех, в которых редис используется не по назначению, т.е. как высоконагруженный производительный кэш.
И в этом случае непонятно, зачем его использовать вообще
Под высокой же нагрузкой его персистентность с записью в один поток превращается в тыкву.
Его в принципе не обязательно где-то хранить. Достаточно придумать правило для генерации, учитывающее текущее время с точностью до минуты и номер телефона, а далее при вводе кода клиентом просто проверяем соответствует ли код правилу.
Adamos, это нюансы. Когда проверяешь код из смс, разумеется надо делать несколько проверок ±1 минута, а дольше минуты такие коды все равно не действуют обычно.