Вступление

Хотите начать быстро? Просто запустите новое приложение Laravel и перейдите в браузере или по любому другому URL-адресу, назначенному вашему приложению. Эта единственная команда позаботится о создании леса всей вашей системы аутентификации, включая сброс паролей!php artisan make:authhttp://your-app.test/register

Большинство веб-приложений предоставляют пользователям возможность сбрасывать забытые пароли. Вместо того, чтобы заставлять вас повторно реализовывать это в каждом приложении, Laravel предоставляет удобные методы для отправки напоминаний пароля и выполнения сброса пароля.

Прежде чем использовать функции сброса пароля в Laravel, ваш пользователь должен использовать эту черту.Illuminate\Notifications\Notifiable

 

База данных

Для начала убедитесь, что ваша модель выполняет контракт. Модель входит в рамках уже реализует этот интерфейс, и использует признак , чтобы включать в себя методы , необходимые для реализации интерфейса.App\UserIlluminate\Contracts\Auth\CanResetPasswordApp\UserIlluminate\Auth\Passwords\CanResetPassword

Генерация таблицы сброса токенов

Затем необходимо создать таблицу для хранения токенов сброса пароля. Миграция для этой таблицы включена в Laravel из коробки и находится в каталоге. Итак, все, что вам нужно сделать, это запустить миграцию базы данных:database/migrations

php artisan migrate

 

Маршрутизация

Laravel включает в себя и классы, которые содержат логику, необходимую для пересылки ссылок по электронной почте и сброса паролей пользователей. Все маршруты, необходимые для сброса пароля, могут быть созданы с помощью команды Artisan:Auth\ForgotPasswordControllerAuth\ResetPasswordControllermake:auth

php artisan make:auth

 

Просмотры

Опять же, Laravel сгенерирует все необходимые представления для сброса пароля при выполнении команды. Эти представления размещены в . Вы можете настроить их по мере необходимости для вашего приложения.make:authresources/views/auth/passwords

 

После сброса паролей

После того, как вы определили маршруты и представления для сброса паролей вашего пользователя, вы можете получить доступ к маршруту в вашем браузере по адресу . Входит в рамки уже включает в себя логику , чтобы отправить ссылку для сброса пароля по электронной почте, а включает в себя логику для сброса пользовательских паролей./password/resetForgotPasswordControllerResetPasswordController

После сброса пароля пользователь автоматически войдет в приложение и будет перенаправлен на /home. Вы можете настроить местоположение перенаправления сброса почтового пароля, определив redirectToсвойство в ResetPasswordController:

protected $redirectTo = '/dashboard';

По умолчанию токены сброса пароля истекают через час. Вы можете изменить это с помощью expireопции сброса пароля в вашем файле.config/auth.php

 

Настройка

Настройка защиты аутентификации

В вашем файле конфигурации вы можете настроить несколько «охранников», которые могут использоваться для определения поведения аутентификации для нескольких пользовательских таблиц. Вы можете настроить включенный для использования защиты по вашему выбору, переопределив метод на контроллере. Этот метод должен вернуть экземпляр guard:auth.phpResetPasswordControllerguard

use Illuminate\Support\Facades\Auth;

/**
 * Get the guard to be used during password reset.
 *
 * @return \Illuminate\Contracts\Auth\StatefulGuard
 */
protected function guard()
{
    return Auth::guard('guard-name');
}

Настройка брокера паролей

В вашем файле конфигурации вы можете настроить несколько «посредников» для паролей, которые могут использоваться для сброса паролей для нескольких пользовательских таблиц. Вы можете настроить включенный и использовать брокера по вашему выбору, переопределив метод:auth.phpForgotPasswordControllerResetPasswordControllerbroker

use Illuminate\Support\Facades\Password;

/**
 * Get the broker to be used during password reset.
 *
 * @return PasswordBroker
 */
public function broker()
{
    return Password::broker('name');
}

Сбросить настройки электронной почты

Вы можете легко изменить класс уведомлений, используемый для отправки пользователю ссылки на сброс пароля. Для начала переопределите sendPasswordResetNotificationметод в вашей Userмодели. В рамках этого метода вы можете отправить уведомление, используя любой выбранный вами класс уведомлений. Сброс пароля $token- это первый аргумент, полученный методом:

/**
 * Send the password reset notification.
 *
 * @param  string  $token
 * @return void
 */
public function sendPasswordResetNotification($token)
{
    $this->notify(new ResetPasswordNotification($token));
}