Ответы пользователя по тегу Laravel
  • Как сделать регистрацию и авторизацию пользователей через мобильный номер?

    @Tirael78
    необходимо:
    1 подключиться к услуге рассылки СМС, наилучшее решение через существующий шлюз, например по России, мы после большого перебора остановились на smsc.ru (это не реклама), у них хороший api, цены в рынке.
    2 Необходимо реализовать взаимодействие с api смс шлюза на своем сервере (в зависимости от выбора api).
    3 На стороне сервера необходимо генерировать код подтверждения, к примеру набор из 4 или 6 цифр или букв, или иной комбинации. Сохранить связку пользователь - код подтверждения, чтобы иметь возможность сравнения в будущем.
    4 используя api шлюза отправляете код подтверждения на номер пользователя.
    5 абонент вводит код подтверждения и отправляет вам на сервер, любым реализованным вами механизмом.
    6 получив под подтверждения, проверяете, что данному пользователю был отправлен именно этот код. Если данные совпали - авторизуете пользователя.

    Некоторые советы по реализации:
    1 установите срок жизни кода, это нужно для безопасности
    2 введите ограничение на количество попыток ввода, опять же для безопасности
    3 при взаимодействии с api шлюза, необходимо анализировать ответы на ваши запросы, скажем человек ввел не существующий номер телефона, ошибся, вам необходимо корректно обработать данную ситуацию, подобных моментом может быть достаточно много.
    4 некоторые шлюзы (как например указанный мной выше) примут российский номер в формате 89 и так далее, но надо понимать что не факт что все шлюзы так поступят, правильный код России 7, и следовательно номер мобильного должен начинаться на 79, в других странах есть свои особенности, и это надо учитывать.
    5 установите срок жизни СМС сообщения (если шлюз позволяет это в своем api) не более срока жизни кода на вашем сервере, к примеру человек вне зоны действия сети, и СМС придет к нему через 1 час, когда уже не будет актуальна, в итоге вы заплатите за бессмысленное СМС сообщение, если у вас много абонентов, в итоге может набежать большая сумма. А так, сообщение просто не будет отправлено и вы сэкономите деньги.

    На самом деле там еше много нюансов, в зависимости от потребности вашего сервиса, но в общих чертах примерно так.
    Ответ написан
    Комментировать