Lassen Sie das Passwort töten! Magic Login Links zur Rettung!
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!
Die
-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:
- Benutzer zugreifen auf die Anmeldeseite; E -Mail -Adresse eingeben und bestätigen;
- Das System sendet einen Anmeldelink an die E -Mail -Adresse Nach dem Klicken auf den Link wird der Benutzer zur Anwendung zurückgeleitet und angemeldet
- Der Link ist ungültig.
- Wenn Sie Ihr Anwendungskennwort vergessen, aber daran denken, Ihre E -Mail zu registrieren, ist diese Methode sehr nützlich. Diese Technologie wird auch von Anwendungen wie Slack übernommen. In diesem Tutorial wird zeigen, wie dieses System in einer Laravel -Anwendung implementiert wird. Sehen Sie hier den vollständigen Code.
- Kernpunkte
Kennwörter geben:
Verwenden Sie "Magic Login Link" basierend auf einer einmaligen URL, um eine einfache und sichere passwortfreie Authentifizierung zu erzielen.- Benutzerfreundliche Einstellungen: Benutzerfreundliche Einstellungen: Verwenden Sie vordefinierte Befehle und eine kleine Anzahl von Änderungen, um dieses System einfach in Laravel-Anwendungen zu implementieren.
- Verbesserte Sicherheit: Magic Login Link eliminiert häufige Schwachstellen in herkömmlichen Krypto -Systemen wie schwachen Passwörtern und Phishing -Angriffen.
- Flexibilität und Steuerung: Benutzer können sich weiterhin mit traditionellen Kennwörtern anmelden, wobei Flexibilität und Sicherheit berücksichtigt werden.
- Effizientes Token -Management: Das System behandelt automatisch die Token -Ablauf und -überprüfung, um sicherzustellen, dass das Token korrekt verwendet wird und für lange Zeit nicht gültig ist.
- Erstellen Sie eine App
verwendet
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.
Öffnen Sie die .Env -Datei im Stammverzeichnis und geben Sie den Namen des Hostnamens, den Benutzernamen und den Datenbanknamen ein:
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.*
Nach dem Login kopierenNach dem Login kopieren
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.
Migration
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.
Anmeldeverbindung
ändernAls 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.
Erstellen Sie magische Login -Controller, Ansichten und Routen
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:
- Generieren und assoziieren Sie Token: Erstellen Sie eine Route und eine Controller -Methode, um die Einreichung von Anmeldeformularen zu verarbeiten, die E -Mail -Adresse zu überprüfen, ein Token für den Benutzer zu generieren und das Token mit dem Benutzer zuzuordnen. Verwenden Sie
str_random()
, um ein zufälliges Token zu generieren und in der Datenbank zu speichern. - Token -Mail senden: Methode in das
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 SieMail::raw()
, um einfache Textnachrichten zu senden, oder erstellen Sie eine E -Mail -Ansicht, um das Erscheinungsbild der Nachricht zu verbessern. - Token -Überprüfung und -authentifizierung: Erstellen Sie eine Route und eine Controller -Methode, um das Klicken auf den Anmeldelink zu verarbeiten. Verwenden Sie das Routing -Modellbindung, um das Token zu erhalten. Stellen Sie sicher, dass das Token abgelaufen ist und zur eingereichten E -Mail -Adresse gehört. Verwenden Sie die Bibliothek
Carbon
, um die Ablaufzeit des Tokens zu überprüfen. Verwenden Sie nach erfolgreicher ÜberprüfungAuth::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!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

Alipay PHP ...

JWT ist ein offener Standard, der auf JSON basiert und zur sicheren Übertragung von Informationen zwischen Parteien verwendet wird, hauptsächlich für die Identitätsauthentifizierung und den Informationsaustausch. 1. JWT besteht aus drei Teilen: Header, Nutzlast und Signatur. 2. Das Arbeitsprinzip von JWT enthält drei Schritte: Generierung von JWT, Überprüfung von JWT und Parsingnayload. 3. Bei Verwendung von JWT zur Authentifizierung in PHP kann JWT generiert und überprüft werden, und die Funktionen und Berechtigungsinformationen der Benutzer können in die erweiterte Verwendung aufgenommen werden. 4. Häufige Fehler sind Signaturüberprüfungsfehler, Token -Ablauf und übergroße Nutzlast. Zu Debugging -Fähigkeiten gehört die Verwendung von Debugging -Tools und Protokollierung. 5. Leistungsoptimierung und Best Practices umfassen die Verwendung geeigneter Signaturalgorithmen, das Einstellen von Gültigkeitsperioden angemessen.

Die Hijacking der Sitzung kann in den folgenden Schritten erreicht werden: 1. Erhalten Sie die Sitzungs -ID, 2. Verwenden Sie die Sitzungs -ID, 3. Halten Sie die Sitzung aktiv. Zu den Methoden zur Verhinderung der Sitzung der Sitzung in PHP gehören: 1. Verwenden Sie die Funktion Session_regenerate_id (), um die Sitzungs -ID zu regenerieren. 2. Store -Sitzungsdaten über die Datenbank, 3. Stellen Sie sicher, dass alle Sitzungsdaten über HTTPS übertragen werden.

Die Anwendung des soliden Prinzips in der PHP -Entwicklung umfasst: 1. Prinzip der Einzelverantwortung (SRP): Jede Klasse ist nur für eine Funktion verantwortlich. 2. Open and Close Principle (OCP): Änderungen werden eher durch Erweiterung als durch Modifikation erreicht. 3.. Lischs Substitutionsprinzip (LSP): Unterklassen können Basisklassen ersetzen, ohne die Programmgenauigkeit zu beeinträchtigen. 4. Schnittstellen-Isolationsprinzip (ISP): Verwenden Sie feinkörnige Schnittstellen, um Abhängigkeiten und nicht verwendete Methoden zu vermeiden. 5. Abhängigkeitsinversionsprinzip (DIP): Hoch- und niedrige Module beruhen auf der Abstraktion und werden durch Abhängigkeitsinjektion implementiert.

Wie debugge ich den CLI -Modus in PhpStorm? Bei der Entwicklung mit PHPSTORM müssen wir manchmal den PHP im CLI -Modus (COMS -Zeilenschnittstellen) debuggen ...

So setzen Sie die Berechtigungen von Unixsocket automatisch nach dem Neustart des Systems. Jedes Mal, wenn das System neu startet, müssen wir den folgenden Befehl ausführen, um die Berechtigungen von Unixsocket: sudo ...

In Artikel werden wichtige Sicherheitsfunktionen in Frameworks erörtert, um vor Schwachstellen zu schützen, einschließlich Eingabevalidierung, Authentifizierung und regelmäßigen Aktualisierungen.

Statische Bindung (statisch: :) implementiert die späte statische Bindung (LSB) in PHP, sodass das Aufrufen von Klassen in statischen Kontexten anstatt Klassen zu definieren. 1) Der Analyseprozess wird zur Laufzeit durchgeführt.
