Verabschieden Sie sich von Passwortproblemen und nehmen Sie sich sicher und bequemes passwortfreies Login an! In diesem Artikel wird Ihnen die Implementierung eines einmaligen linkbasierten kennwortfreien Anmeldesystems in Laravel-Anwendungen geleitet, um die Sicherheit zu verbessern und die Benutzererfahrung zu vereinfachen.
Dieser Artikel wurde von Younes Rafie und Wern Ancheta überprüft. Vielen Dank an alle Peer -Rezensenten bei SitePoint für die Erhöhung der Inhalte von SitePoint -Inhalten!
-Identitätsauthentifizierungstechnologie entwickelt sich weiterentwickelt, von herkömmlichen Mailbox-Password-Kombinationen über soziale Anmeldung bis hin zu heute kennwortloser Anmeldung (genauer gesagt "E-Mail" -Login). Das passwortlose Login -System überprüft die Identität, indem ein Anmeldelink an die E -Mail des Benutzers gesendet wird.
Der Anmeldeprozess ohne Kennwort lautet wie folgt:
Wenn Sie bereits über ein Laravel -Projekt mit Benutzer und Kennwort verfügen, mach dir keine Sorgen, wir ändern den normalen Authentifizierungsprozess nicht, fügen jedoch eine Ebene darüber hinzu. Benutzer können sich weiterhin mit ihrem Passwort anmelden.
composer create-project laravel/laravel passwordless-laravel 5.2.*
Bevor Sie die Migration ausführen, müssen Sie eine MySQL -Datenbank einrichten.
Wenn Sie ein verbessertes Box mit Homestead verwenden, ist die Kombination aus Datenbank/Benutzername/Passwort Homestead, Homestead, Secret.
<code>[...] DB_CONNECTION=mysql DB_HOST=localhost DB_DATABASE=passwordless-app DB_USERNAME=username DB_PASSWORD= [...]</code>
Laravel Version 5.2 führt eine großartige Funktion vor: Fügen Sie eine vorgefertigte Authentifizierungsschicht mit nur einem Befehl hinzu. Lassen Sie uns das tun:
composer create-project laravel/laravel passwordless-laravel 5.2.*
Dieser Befehl erstellt alles, was Sie für die Authentifizierung benötigen, nämlich Ansichten, Controller und Routen.
In der Datenbank/Migrationsverzeichnis können Sie feststellen, dass die generierte Laravel -Anwendung die Migrationsdateien enthält, die Benutzer Tabellen und Tabellen von Password_Resets erstellen.
Wir werden nichts ändern, da wir immer noch möchten, dass die App einen normalen Authentifizierungsprozess hat.
Um eine Tabelle zu erstellen, rennen Sie:
<code>[...] DB_CONNECTION=mysql DB_HOST=localhost DB_DATABASE=passwordless-app DB_USERNAME=username DB_PASSWORD= [...]</code>
Die App ist jetzt verfügbar und Benutzer sollten in der Lage sein, die Links in der Navigationsleiste zu registrieren und anzumelden.
Als nächstes ändern wir den Login -Link, um ihn in eine benutzerdefinierte Anmeldeansicht umzuleiten, in der der Benutzer nur die E -Mail -Adresse ohne Passwort einreicht.
Navigieren Sie zu Ressourcen/Ansichten/Layouts/App.blade.php. Dort finden Sie den Abschnitt der Navigationsleiste. Ändern Sie die Zeile, die den Anmeldelink enthält (unter der bedingten Anweisung, die überprüft, ob der Benutzer sich angemeldet hat) auf:
Ressourcen/Ansichten/Layouts/App.blade.php
php artisan make:auth
Wenn ungelöschte Benutzer versuchen, auf geschützte Routen zuzugreifen, sollten sie eher zu einer neuen benutzerdefinierten Anmeldeansicht und nicht in die normale Anmeldeansicht gebracht werden. Dieses Verhalten wird in der authentifizierenden Middleware angegeben. Wir müssen es anpassen:
app/http/Middleware/authenticate.php
php artisan migrate
Beachten Sie, dass wir im else -Block die Weiterleitung auf Anmeldung/MagicLink geändert haben, nicht auf das normale Anmeldung.
Der nächste Schritt besteht darin, einen MagicLogincontroller im Authorder zu erstellen:
[...] @if (Auth::guest()) <li><a href="https://www.php.cn/link/9964364bfd2b38643a0b41b981c01f60'/login/magiclink') }}">Login</a></li> <li><a href="https://www.php.cn/link/9964364bfd2b38643a0b41b981c01f60'/register') }}">Register</a></li> [...]
Dann gibt es die Route, auf der die benutzerdefinierte Anmeldeseite angezeigt wird:
app/http/routes.php
class Authenticate { [...] public function handle($request, Closure $next, $guard = null) { if (Auth::guard($guard)->guest()) { if ($request->ajax() || $request->wantsJson()) { return response('Unauthorized.', 401); } else { return redirect()->guest('login/magiclink'); } } return $next($request); } [...]
Aktualisieren wir den MagicLogincontroller, um die Show -Aktion einzuschließen:
app/http/Controller/auth/MagicLogincontroller.php
php artisan make:controller Auth\MagicLoginController
Für die neue Anmeldeansicht werden wir die normale Anmeldeansicht ausleihen, aber das Feld Passwort löschen. Wir haben auch die Post -URL des Formulars geändert, um auf /login/magiclink
zu verweisen.
Erstellen wir einen magischen Ordner im Ordner Ansichten/Authormer, um diese neue Ansicht zu speichern:
[...] Route::get('/login/magiclink', 'Auth\MagicLoginController@show');
Aktualisieren wir die neu erstellte Ansicht zu:
Ressourcen/Ansichten/Auth/Magic/Login.blade.php
class MagicLoginController extends Controller { [...] public function show() { return view('auth.magic.login'); } [...] }
Wir behalten die Option, sich mit Kennwort anzumelden, da sich die Benutzer möglicherweise weiterhin mit dem Kennwort anmelden. Wenn der Benutzer in der Navigationsleiste auf Anmeldung klickt, wird die Anmeldeansicht angezeigt, wie unten gezeigt:
Aufgrund von Platzbeschränkungen kann der Rest der Teile nicht vollständig erweitert werden, aber die grundlegenden Ideen sind wie folgt:
str_random()
, um ein zufälliges Token zu generieren und in der Datenbank zu speichern. UserToken
Modell hinzufügen, um E -Mails mit Anmeldelinks mit der E -Mail -Funktion von Laravel zu senden. Der Link sollte das Token, die E -Mail -Adresse enthalten und meinen Wert erinnern. Verwenden Sie Mail::raw()
, um einfache Textnachrichten zu senden, oder erstellen Sie eine E -Mail -Ansicht, um das Erscheinungsbild der Nachricht zu verbessern. Carbon
, um die Ablaufzeit des Tokens zu überprüfen. Verwenden Sie nach erfolgreicher Überprüfung Auth::login()
, um sich beim Benutzer anzumelden und das gebrauchte Token zu löschen. In den oben genannten Schritten können Sie in der Laravel-Anwendung ein sicheres und zuverlässiges kennwortfreies Anmeldesystem implementieren, das den Benutzern ein bequemeres und sichereres Anmeldebieterlebnis bietet. Denken Sie daran, die Token -Ablaufzeit und andere Einstellungen entsprechend Ihren tatsächlichen Anforderungen anzupassen. Für den vollständigen Code und detailliertere Schritte finden Sie in dem von Ihnen angegebenen vollständigen Code -Link.
Das obige ist der detaillierte Inhalt vonLassen Sie das Passwort töten! Magic Login Links zur Rettung!. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!