Heim > PHP-Framework > Laravel > Hauptteil

Neuer Passwortbestätigungsprozess für die Benutzeranmeldung in Laravel 6.2 (Codebeispiel)

藏色散人
Freigeben: 2020-01-30 20:45:39
nach vorne
2745 Leute haben es durchsucht

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
Nach dem Login kopieren

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
Nach dem Login kopieren

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
Nach dem Login kopieren

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
Nach dem Login kopieren

Als nächstes führen wir die Migration durch und erstellen dann einen Testbenutzer:

php artisan migrate
Nach dem Login kopieren

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'
 ... ]);
Nach dem Login kopieren

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
Nach dem Login kopieren

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');
 }
 }
Nach dem Login kopieren

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
Nach dem Login kopieren

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
Nach dem Login kopieren

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(&#39;Settings&#39;)
 ->middleware([&#39;auth&#39;])
 ->group(function () {
 Route::get(&#39;/settings/ssh/create&#39;, &#39;SSHController@create&#39;)->middleware(&#39;password.confirm&#39;);
 });
Nach dem Login kopieren

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:

Neuer Passwortbestätigungsprozess für die Benutzeranmeldung in Laravel 6.2 (Codebeispiel)

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(&#39;auth&#39;));
 return view(&#39;secret&#39;);
 }
Nach dem Login kopieren

Neuer Passwortbestätigungsprozess für die Benutzeranmeldung in Laravel 6.2 (Codebeispiel)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-Tutorial

!

Das 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!

Verwandte Etiketten:
Quelle:cnblogs.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!