Автор оригинала: David Wong.
Статья была переслана из профессионального сообщества разработчиков laravel. Оригинальная ссылка: https://learnku.com/laravel/t
Вчера Laravel выпустила версию 6.2, добавив новую функцию подтверждения пароля, которая позволяет вам требовать, чтобы зарегистрированные пользователи повторно вводили свои пароли перед доступом к маршруту.
При выполнении конфиденциальных операций эта функция аналогична диалоговому окну подтверждения на GitHub. Вы можете легко настроить его в laravel, поэтому давайте попробуем некоторые новые функции, чтобы вы могли лучше понять, как это работает:
Устанавливать
Прежде всего, чтобы более интуитивно понять эту новую функцию, мы создаем новое приложение laravel:
laravel new confirm-app cd confirm-app composer require laravel/ui --dev
Как вы знаете, команда make: auth была удалена из laravel 6, и та же функция была перенесена в официальный пакет расширения laravel/UI. Давайте используем новую команду для создания кода, связанного с аутентификацией пользователя:
php artisan ui vue --auth yarn install yarn dev
Далее мы настраиваем базу данных SQLite (вы, конечно, можете выбрать базу данных, которую хотите использовать):
touch database/database.sqlite
Мы создали laravel для использования sqlite Профиль по умолчанию, необходимый для драйвера, но его все равно необходимо обновить .environment Файл, чтобы убедиться в правильности подключения к базе данных и пути к ней:
DB_CONNECTION=sqlite # ... #Use the default path of SQLite driver # DB_DATABASE=laravel
Затем давайте запустим миграцию и создадим тестового пользователя:
php artisan migrate
Мы можем использовать метод factory() для создания тестового пользователя в консоли:
php artisan tinker
>>> $user = factory(App\User::class)->create([
... 'password' => bcrypt('secret'),
... 'email' => '[email protected]'
... ]);
Контроллер записи
Предположим, вы хотите, чтобы пользователи повторно проверяли свои пароли перед просмотром административных действий, таких как добавление ключей SSH. Мы хотим, чтобы пользователи повторно вводили свои пароли в настроенном окне (по умолчанию-три часа).
Мы собираемся создать поддельный /настройки/ssh/создать Маршрутизация, в которой нам нужен новый пароль.подтвердите Промежуточное программное обеспечение, затем пользователь может создать новый ключ:
php artisan make:controller Settings/SSHController
Затем создайте метод в этом контроллере create() :
namespace App\Http\Controllers\Settings;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
class SSHController extends Controller
{
public function create()
{
return view('secret');
}
}
Мы настроим безопасность Шаблон и поместим его в корень пути просмотра resources/views/secret.blade.php :
@extends('layouts.app')
@section('content')
Add a New SSH Key
This page is only shown after password confirmation.
@endsection
При кодировании вы должны копировать файлы auth/passwords/confirm.blade.php Для вашего проекта вы можете скопировать файл здесь: UI/confirm.stub. Скопируйте этот файл и добавьте его в следующий путь вашего проекта:
resources/views/auth/passwords/confirm.blade.php
Далее нам нужно определить маршрут в маршрутах/web.php Мне нужно это промежуточное программное обеспечение в конце файла:
Route::namespace('Settings')
->middleware(['auth'])
->group(function () {
Route::get('/settings/ssh/create', 'SSHCont[email protected]')->middleware('password.confirm');
});
Примечание: обычно вы можете выполнить все требования auth Маршруты аутентификации промежуточного программного обеспечения объединяются вместе. В этой демо-версии мы Настройки Контроллер создается в пространстве имен
С его помощью, как только вы войдете в систему, вы будете перенаправлены на /главная страница 。 Там перейдите в /настройки/ssh/создать , а затем вам будет предложено ввести пароль:
Если вы будете следовать этому руководству, введите секрет , отправьте форму и введите создать Представление. После подтверждения пароля вы можете обновить эту страницу без запроса.
Используйте новую вспомогательную функцию DD (), чтобы добавить ее в свой SSH-контроллер::create() Метод определит, когда в следующий раз вам будет предложено auth.password_confirmed_at в сессии Значение:
public function create()
{
ddd(session('auth'));
return view('secret');
}
Это последний раз, когда пароль был проверен. По умолчанию пользователю не будет повторно напоминаться о необходимости подтверждения пароля в течение 3 часов. Конечно, вы можете изменить пароль, изменив config('auth.password_timeout') Элемент конфигурации для настройки (элемент конфигурации определен в config/auth.php В файле конфигурации).
Учить больше
Спасибо дрису Винту за то, что он предоставил нам эту удивительную новую функцию, включенную в laravel 6.2. Вы можете узнать больше о деталях реализации промежуточного программного обеспечения с помощью запроса на извлечение.
Оригинал: “https://developpaper.com/new-password-confirmation-process-for-user-login-in-laravel-6-2/”