Heim >Backend-Entwicklung >PHP-Tutorial >Lassen Sie das Passwort töten! Magic Login Links zur Rettung!

Lassen Sie das Passwort töten! Magic Login Links zur Rettung!

William Shakespeare
William ShakespeareOriginal
2025-02-10 12:27:14562Durchsuche

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.

Let's Kill the Password! Magic Login Links to the Rescue!

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.

Let's Kill the Password! Magic Login Links to the Rescue!

Der Anmeldeprozess ohne Kennwort lautet wie folgt:

  1. Benutzer zugreifen auf die Anmeldeseite;
  2. E -Mail -Adresse eingeben und bestätigen;
  3. Das System sendet einen Anmeldelink an die E -Mail -Adresse
  4. Nach dem Klicken auf den Link wird der Benutzer zur Anwendung zurückgeleitet und angemeldet
  5. Der Link ist ungültig.
  6. 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.
  7. 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
Erstellen Sie zunächst eine neue Laravel -Anwendung. In diesem Tutorial wird Laravel 5.2:

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.

<code class="language-bash">composer create-project laravel/laravel passwordless-laravel 5.2.*</code>
Datenbankeinstellungen

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>
Authentifizierung bauen

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:

<code class="language-bash">composer create-project laravel/laravel passwordless-laravel 5.2.*</code>

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

ändern

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

<code class="language-bash">php artisan make:auth</code>

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

<code class="language-bash">php artisan migrate</code>

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:

<code class="language-html">[...]
@if (Auth::guest())
<li><a href="https://www.php.cn/link/9964364bfd2b38643a0b41b981c01f60'/login/magiclink')%20%7D%7D">Login</a></li>
<li><a href="https://www.php.cn/link/9964364bfd2b38643a0b41b981c01f60'/register')%20%7D%7D">Register</a></li>
[...]</code>

Dann gibt es die Route, auf der die benutzerdefinierte Anmeldeseite angezeigt wird:

app/http/routes.php

<code class="language-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);
}
[...]</code>

Aktualisieren wir den MagicLogincontroller, um die Show -Aktion einzuschließen:

app/http/Controller/auth/MagicLogincontroller.php

<code class="language-bash">php artisan make:controller Auth\MagicLoginController</code>

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:

<code class="language-php">[...]
Route::get('/login/magiclink', 'Auth\MagicLoginController@show');</code>

Aktualisieren wir die neu erstellte Ansicht zu:

Ressourcen/Ansichten/Auth/Magic/Login.blade.php

<code class="language-php">class MagicLoginController extends Controller
{
    [...]
    public function show()
    {
        return view('auth.magic.login');
    }
    [...]
}</code>

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:

Let's Kill the Password! Magic Login Links to the Rescue!

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 Sie Mail::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ü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!

Stellungnahme:
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
Vorheriger Artikel:PHP-FIG: Was gehst du?Nächster Artikel:PHP-FIG: Was gehst du?