Введение
Хотите быстро приступить к работе? Просто запустите shphp artisan make:auth
в новом приложении Laravel и перейдите в свой браузер по адресу http://your-app.dev/register или по любому другому URL, который назначен вашему приложению. Эта единственная команда позаботится о строительстве всей вашей системы аутентификации, включая сброс паролей!
Большинство веб-приложений предоставляют пользователям возможность сбросить забытые пароли. Вместо того, чтобы заставлять вас повторять это в каждом приложении, Laravel предлагает удобные методы для отправки напоминаний о пароле и сброса пароля.
Прежде чем использовать функции сброса пароля Laravel, ваш пользователь должен использовать типаж PHPIlluminate\Notifications\Notifiable
.
О базе данных
Для начала убедитесь, что ваша модель PHPApp\User
реализует контракт PHPIlluminate\Contracts\Auth\CanResetPassword
. Конечно, модель PHPApp\User
, включенная в инфраструктуру, уже реализует этот интерфейс и использует типаж PHPIlluminate\Auth\Passwords\CanResetPassword
, чтобы включить методы, необходимые для реализации интерфейса.
Создание таблицы переназначения маркеров
Затем необходимо создать таблицу для хранения токенов сброса пароля. Перенос для этой таблицы входит в комплект поставки Laravel и находится в каталоге database/migrations. Итак, все, что вам нужно сделать, это запустить миграцию базы данных:
shphp artisan migrate
Маршрутизация
Laravel включает классы PHPAuth\ForgotPasswordController
и PHPAuth\ResetPasswordController
, которые содержат логику, необходимую для отправки по электронной почте паролей сброса пароля и сброса пользовательских паролей. Все маршруты, необходимые для выполнения сброса пароля, могут быть сгенерированы командой Artisan make:auth:
shphp artisan make:auth
Представления
Опять же, Laravel сгенерирует все необходимые представления для сброса пароля, когда выполняется команда make:auth. Эти представления размещаются в resources/views/auth/passwords. Вы можете настроить их по мере необходимости для своего приложения.
После сброса паролей
После того как вы определили маршруты и представления для сброса паролей пользователя, вы можете просто получить доступ к маршруту в вашем браузере с помощью /password/reset. Контроллер PHPForgotPasswordController
, входящий в состав фреймворка, уже включает в себя логику отправки электронной почты для сброса пароля, в то время как PHPResetPasswordController
включает в себя логику сброса пользовательских паролей.
После сброса пароля пользователь автоматически будет зарегистрирован в приложении и перенаправлен на /home. Вы можете настроить местоположение переадресации сброса после сброса пароля, указав свойство PHPredirectTo
в PHPResetPasswordController
:
protected $redirectTo = '/dashboard';
По умолчанию токены сброса пароля истекают через один час. Вы можете изменить это с помощью опции сброса пароля PHPexpire
в файле config/auth.php.
Настройка
Настройка защиты аутентификации
В файле конфигурации PHPauth.php
вы можете настроить несколько «охранников»(guards), которые могут использоваться для определения поведения аутентификации для нескольких пользовательских таблиц. Вы можете настроить включенный PHPResetPasswordController
для использования охранника по вашему выбору, переопределив метод PHPguard
на контроллере. Этот метод должен возвращать его экземпляр:
use Illuminate\Support\Facades\Auth;
protected function guard()
{
return Auth::guard('guard-name');
}
Настройка брокера паролей
В файле конфигурации PHPauth.php
вы можете настроить несколько «брокеров» (brokers) пароля, которые могут быть использованы для сброса паролей в нескольких пользовательских таблицах. Вы можете настроить включенные функции PHPForgotPasswordController
и PHPResetPasswordController
, чтобы использовать брокера по вашему выбору, переопределив метод PHPbroker
:
use Illuminate\Support\Facades\Password;
/**
* Получите брокер, который будет использоваться при сбросе пароля.
*
* @return PasswordBroker
*/
protected function broker()
{
return Password::broker('name');
}
Сброс настроек электронной почты
Вы можете легко изменить класс уведомления, используемый для отправки ссылки сброса пароля пользователю. Для начала переопределите метод PHPsendPasswordResetNotification
в вашей модели PHPUser
. В рамках этого метода вы можете отправить уведомление с использованием любого выбранного вами класса уведомлений. PHP$token
— это первый аргумент, полученный методом:
/**
* Отправка уведомления об изменении пароля.
*
* @param string $token
* @return void
*/
public function sendPasswordResetNotification($token)
{
$this->notify(new ResetPasswordNotification($token));
}
Комментарии (2)
вариант как изменить пароль пользователя, в модели User проверить наличие
дальше в любом месте кода
Получаю ответ: Call to undefined method Illuminate\Database\Query\Builder::notify()
Где ошибка?