Heim > Artikel > PHP-Framework > Neuer Passwortbestätigungsprozess für die Benutzeranmeldung in Laravel 6.2 (Codebeispiel)
Laravel hat Version 6.2 veröffentlicht, die eine neue Passwortbestätigungsfunktion hinzufügt, mit der Sie von angemeldeten Benutzern verlangen können, ihr Passwort erneut einzugeben, bevor sie auf Routen zugreifen können.
Diese Funktion ähnelt dem GitHub-Bestätigungsdialog, wenn Sie vertrauliche Vorgänge ausführen. Sie können dies ganz einfach in Laravel einrichten. Probieren Sie also die neue Funktion aus, damit Sie besser verstehen, wie sie funktioniert:
Einrichtung
Zuerst, um es zu verstehen Um diese neue Funktion intuitiver nutzen zu können, erstellen wir eine neue Laravel-Anwendung:
laravel new confirm-app cd confirm-app composer require laravel/ui --dev
Wie Sie wissen, wurde der Befehl make:auth in Laravel 6 entfernt und die gleiche Funktionalität wurde auf Laravel/UI migriert Erweiterungspaket. Lassen Sie uns einen neuen Befehl verwenden, um Code für die Benutzerauthentifizierung zu generieren:
php artisan ui vue --auth yarn install yarn dev
Als nächstes konfigurieren wir die SQLite-Datenbank (natürlich können Sie die Datenbank auswählen, die Sie verwenden möchten):
touch database/database.sqlite
Wir haben die Standardkonfigurationsdatei erstellt, die Laravel bei Verwendung des SQLite-Treibers benötigt, Sie müssen jedoch noch die .env-Datei aktualisieren, um sicherzustellen, dass die Datenbankverbindung und der Pfad korrekt sind:
DB_CONNECTION=sqlite # ... # 使用 sqlite 驱动程序的默认路径 # DB_DATABASE=laravel
Als nächstes führen wir die Migration durch und erstellen dann einen Testbenutzer:
php artisan migrate
Wir können ihn in der Konsole über die Fabrik erstellen( ) Methode Ein Testbenutzer:
php artisan tinker >>> $user = factory(App\User::class)->create([ ... 'password' => bcrypt('secret'), ... 'email' => 'admin@example.com' ... ]);
Schreiben eines Controllers.
Angenommen, Sie möchten, dass der Benutzer eine Verwaltungsaktion wie das Hinzufügen eines SSH-Schlüssels anzeigt Bevor Sie Ihr Passwort erneut bestätigen. Wir möchten, dass Benutzer ihre Passwörter innerhalb eines konfigurierten Zeitfensters erneut eingeben (Standard sind drei Stunden).
Wir werden eine gefälschte /settings/ssh/create-Route erstellen, in der wir das neue Passwort benötigen. Bestätigen Sie die Middleware, bevor der Benutzer einen neuen Schlüssel erstellen kann:
php artisan make:controller Settings/SSHController
Weiter , erstellen Sie die Methode create() in diesem Controller:
namespace App\Http\Controllers\Settings; use App\Http\Controllers\Controller; use Illuminate\Http\Request; class SSHController extends Controller { public function create() { return view('secret'); } }
Wir werden die geheime Vorlage stubbeln und sie im Stammverzeichnis des Ansichtspfads im Verzeichnis resources/views/secret.blade platzieren .php:
@extends('layouts.app') @section('content') <div class="container"> <div class="row justify-content-center"> <div class="col-md-8"> <h1>Add a New SSH Key</h1> <p>This page is only shown after password confirmation.</p> </div> </div> </div> @endsection
Beim Codieren sollten Sie die Datei auth/passwords/confirm.blade.php in Ihr Projekt kopieren. Sie können die Datei hier kopieren: ui/confirm. Stub. Kopieren Sie diese Datei und fügen Sie sie im folgenden Pfad zu Ihrem Projekt hinzu:
resources/views/auth/passwords/confirm.blade.php
Als nächstes müssen wir die Routen in „routes/“ definieren. Am Ende der web.php-Datei erwähne ich, dass es sich um diese Middleware handelt benötigt:
Route::namespace('Settings') ->middleware(['auth']) ->group(function () { Route::get('/settings/ssh/create', 'SSHController@create')->middleware('password.confirm'); });
Hinweis: Normalerweise können Sie alle Routen, die eine Authentifizierung erfordern, über die Authentifizierungs-Middleware aggregieren. In dieser Demo haben wir einen Controller im Settings-Namespace erstellt >Damit werden Sie nach der Anmeldung zu /home weitergeleitet. Navigieren Sie dort zu /settings/ssh/create und Sie werden zur Eingabe Ihres Passworts aufgefordert:
Wenn Sie diesem Tutorial folgen, geben Sie „secret“ ein, senden Sie das Formular ab und rufen Sie die Erstellungsansicht auf. Sobald Sie Ihr Passwort bestätigt haben, können Sie diese Seite ohne Aufforderung aktualisieren.
Verwenden Sie die neue Hilfsfunktion ddd() und fügen Sie sie Ihrer SSHController::create()-Methode hinzu, die den Wert der Sitzung in auth.password_confirmed_bestimmt, wenn Sie das nächste Mal dazu aufgefordert werden:
public function create() { ddd(session('auth')); return view('secret'); }
Dies ist der Zeitpunkt, zu dem das Passwort zuletzt überprüft wurde. Standardmäßig werden Benutzer nicht innerhalb von 3 Stunden daran erinnert, ihr Passwort erneut zu bestätigen. Natürlich können Sie es anpassen, indem Sie das Konfigurationselement config('auth.password_timeout') ändern (das Konfigurationselement ist in config/auth. von Laravel definiert). v6.2.0. PHP-Konfigurationsdatei).
Weitere technische Artikel zum Laravel-Framework finden Sie in der Spalte
Laravel-TutorialDas obige ist der detaillierte Inhalt vonNeuer Passwortbestätigungsprozess für die Benutzeranmeldung in Laravel 6.2 (Codebeispiel). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!