Рубрики
Uncategorized

Новый процесс подтверждения пароля для входа пользователя в laravel 6.2

Автор оригинала: 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/”