Я использую Laravel 7.x и sanctum. Логины работают, и я хотел бы создать опцию «Забыли пароль» в моем приложении SPA.
Я борюсь с основами, поскольку большинство примеров в документации полагаются на леса авторизации. Пока мне удалось получить следующее:
- У меня есть класс контроллера
ForgotPasswordController
с методомreset
, который получает электронное письмо для сброса через POST. - Я создал объект:
$user = User::where('email', $email)->get()->first();
На данный момент я слишком незнаком с архитектурой, чтобы знать, что делать дальше, будь то фасад пароля, я вижу некоторые дополнительные классы в пространстве имен Illuminat\Auth\Password
. Моя цель - создать токен с истекающим сроком действия, отправить его пользователю по электронной почте через конфигурацию электронной почты по умолчанию (я знаю, как отправить электронное письмо / создать шаблон), а затем иметь возможность выполнить вызов веб-службы, который позволит разрешить пароль.
Вот что я знаю ...
- Я установил черту
CanResetPassword
для своих пользовательских моделей, которая, как мне кажется, необходима для поддержки собственных методов сброса пароля. - Я считаю, что цель состоит в том, чтобы создать токен сброса, привязанный к электронной почте пользователя, срок действия которой истекает через определенный период времени, а затем отправить этот токен, добавленный к URL-адресу в электронном письме (Я не знаю архитектурных последствий, связанных с генерацией токен за строкой таблицы)
- Есть
Password
фасад сsendResetLink
методом, но этот метод не может работать для спа-приложений, потому что базовый URL-адрес клиентского приложения будет другим, поэтому я предполагаю, что что-то родное придется переписать. Фактически, вызов этого метода вернет ошибкуRoute [password.reset] not defined
.
Я предполагаю, что мне понадобится пароль Facade, если да, то каков метод создания токена? Следует ли мне просто отправить ссылку с добавленным токеном по электронной почте или существуют другие архитектурные соображения для поддержки истечения срока действия токена?
Прошу прощения, если мои вопросы ошибочны, я не понимаю архитектуру, поэтому делаю предположения.