Die Authentifizierung ist in fast allen Webanwendungen enthalten, mit denen Sie arbeiten. Es ist wirklich langweilig, den gesamten Boilerplate-Code in jedem Projekt zu wiederholen. Nun, die gute Nachricht: Laravel 5 befreit Sie von dieser Langeweile, indem Sie eine fertige Authentifizierungsfassade bereitstellen.
Alles, was Sie tun müssen, ist, den Authentifizierungsdiensteanbieter an die Anforderungen Ihres Projekts anzupassen und anzupassen. In diesem kurzen Tipp zeige ich Ihnen genau, wie das geht.
Wenn Sie eine vorgefertigte, bewährte Lösung wünschen, versuchen Sie es mit Vanguard - Advanced PHP Login und User Management auf Envato Market. Es ist eine in Laravel 5.2 geschriebene PHP-Anwendung, mit der Websitebesitzer schnell Authentifizierung, Autorisierung und Benutzerverwaltung auf ihrer Website hinzufügen und aktivieren können.
Vanguard - Erweitertes PHP-Login und Benutzermanagement auf dem Envato-MarktIch gehe davon aus, dass Sie mit einer neuen Laravel 5-Installation beginnen, aber Sie können alle diese Schritte überspringen, wenn Sie sie bereits ausgeführt haben. Zunächst einmal werden Sie einige Umgebungsvariablen in festlegen .env
Datei im Stammverzeichnis Ihres Projekts. Diese haben im Wesentlichen mit der Datenbankkonfiguration zu tun.
APP_ENV = local APP_DEBUG = true APP_KEY = 8wfDvMTvfXWHuYE483uXF11fvX8Qi8gC DB_HOST = localhost DB_DATABASE = laravel_5_authentication DB_USERNAME = Root
Beachten Sie die APP_ENV
, DB_HOST
, DB_DATABASE
, DB_USERNAME
, und DB_PASSWORD
Variablen. Das APP_ENV
Variable teilt Laravel mit, in welcher Umgebung wir unsere Webanwendung ausführen möchten. Der Rest der Datenbankvariablennamen ist ziemlich offensichtlich.
Dies ist alles, was Sie zum Konfigurieren der Datenbankverbindung tun müssen. Aber wie nutzt Laravel diese Variablen? Untersuchen wir das config / database.php
Datei. Sie werden feststellen, dass die Verwendung von env ()
Funktion. Zum Beispiel, env ('DB_HOST', 'localhost')
. Laravel 5 verwendet diese Funktion zum Erfassen von Variablen aus $ _ENV
und $ _SERVER
globale Arrays, die automatisch mit den von Ihnen definierten Variablen gefüllt werden .env
Datei.
Ausführen PHP Handwerker migrieren: install --env = local
in Ihrem Terminal im Stammverzeichnis Ihres Projekts, um die Migrationen lokal zu installieren. Beachten Sie auch, dass im Migrationsprogramm bereits zwei Migrationen definiert sind Datenbank / Migrationen
Mappe. Mit diesen Migrationen erstellt Laravel 5 eine Benutzer
und ein password_resets
Tabelle, damit die Standard-Authentifizierungs-Boilerplate funktioniert. Ich werde eine dritte Migration erstellen, um die Benutzer
Diese Tabelle zeigt Ihnen, wie Sie das Standard-Authentifizierungs-Setup anpassen.
Ausführen PHP Handwerker machen: Migration alter_users_table_remove_name_add_first_name_last_name
im Terminal, um eine dritte Migration zu erstellen.
dropColumn ('name'); $ table-> string ('first_name', 50) -> after ('id'); $ table-> string ('last_name', 50) -> after ('first_name'); ); / ** * Kehren Sie die Migrationen um. * * @return void * / public function down () Schema :: table ('Benutzer', Funktion ($ table) $ table-> dropColumn ('last_name'); $ table-> dropColumn ('first_name'); $ table-> string ('name') -> after ('id'););
Wie Sie sehen, haben Sie das Namensfeld entfernt und zwei weitere Felder für hinzugefügt Vorname
und Nachname
mit einer maximalen Länge von 50 Zeichen. Sie haben auch den Code hinzugefügt, der diese Änderungen in der Datenbank zurücksetzt.
Ausführen PHP Handwerker migrieren
im Terminal. Wenn die Migrationen erfolgreich ausgeführt wurden, sollten Sie in der Lage sein, beide Tabellen in der Datenbank mit den von Ihnen definierten Feldern anzuzeigen.
Sie müssen den Registrardienst so konfigurieren, dass er das neu definierte hinzufügt Benutzer
Tabellenfelder.
Bearbeiten Sie die Datei app / Dienste / Registrar.php
.
'erforderlich | min: 3 | max: 50', 'last_name' => 'erforderlich | min: 3 | max: 50', 'email' => 'erforderlich | email | max: 255 | unique: Benutzer', 'Kennwort '=>' erforderlich | bestätigt | min: 6 ']]); / ** * Erstellen Sie nach einer gültigen Registrierung eine neue Benutzerinstanz. * * @param array $ data * @return User * / public Funktion create (Array $ data) return User :: create (['first_name' => $ data ['first_name']), 'last_name' => $ data [ 'last_name'], 'email' => $ data ['email'], 'password' => bcrypt ($ data ['password']),]);
Das Validator
Diese Funktion validiert die übergebenen Daten des Benutzerregistrierungsformulars. Sie haben die Standardeinstellung entfernt Name
Feld und fügte das hinzu Vorname
und Nachname
Felder mit einer Mindestlänge von drei Zeichen und einer maximalen Länge von 50 Zeichen für beide. Das erstellen
Funktion fügt den registrierten Benutzer zum hinzu Benutzer
Tabelle in der Datenbank, so müssen Sie nur die Vorname
und Nachname
Felder dazu.
Sie müssen auch das Benutzermodell aktualisieren, um die Version mit aufzunehmen Vorname
und Nachname
Felder.
Bearbeiten Sie die Datei app / User.php
.
Das
$ ausfüllbar
array gibt an, welche Felder des Modells zur Bearbeitung geöffnet sind. Im Allgemeinen enthalten Sie keine Felder, die automatisch in dieses Array generiert werden, oder Felder, für die keine Benutzereingabe wie der Hash für ein Erinnerungs-Token erforderlich ist. Alles, was Sie getan haben, ist das Update$ ausfüllbar
Array, um dieVorname
undNachname
massenweise zuordenbar sein.Ansicht aktualisieren
Zum Schluss müssen Sie nur die Front-End-Ansichten aktualisieren, um die
Vorname
undNachname
Felder. Zuerst aktualisieren Sie das Anmeldeformular.Bearbeiten Sie die Datei
resources / views / auth / register.blade.php
.@extends ('app') @section ('content')@ endectionRegistrieren@if (count ($ errors)> 0)Hoppla! Es gab einige Probleme mit Ihrer Eingabe.@endif
@foreach ($ errors-> all () als $ error)
- $ error
@endforeachSie haben das hinzugefügt
Vorname
undNachname
Felder zum Anmeldeformular. Sie müssen auch das Standard-App-Layout unter bearbeitenresources / views / app.blade.php
, um den Namen des angemeldeten Benutzers im Navigationsmenü anzuzeigen.Laravel 5: Verwenden der Authentifizierungsfassade @ield ('Inhalt')Sichern Sie Ihre Routen
Um Ihre Routen zu sichern und zuzulassen, dass nur angemeldete Benutzer auf sie zugreifen können, müssen Sie die von Laravel bereitgestellte Auth-Middleware verwenden. Die Auth Middleware finden Sie unter
app \ http \ Middleware \ authenticate.php
.Hier einige Beispiele, wie Sie Ihre Routen schützen können.
// Route schließen Route :: get ('', [' middleware '=>' auth ', function () // Wenn der Benutzer nicht angemeldet ist // er / sie wird zur Anmeldeseite // umgeleitet und dieser Code wird nicht ausgeführt)); // Controller-Aktion Route :: get (' ', [' middleware '=>' auth ',' verwendet '=>' @ ']); // innerhalb einer Controller-Klasse erweitert YourController die Controller öffentliche Funktion __construct () $ this-> Middleware (' '); $ this-> Middleware (' ', [' nur '=> [' ']]); $ this-> Middleware (' ', [' außer '=> [' ']]); Ändern der Standardauthentifizierungsrouten
Sie können ausführen
php handwerkliche route: liste
Überprüfen Sie im Terminal die Standardrouten, die von der Authentifizierungsfassade verwendet werden. Sie können auf diese Routen zugreifen, um Ihren Authentifizierungscode zu testen. Hier einige Beispiele, wie Sie diese Routen ändern können.Bearbeiten Sie die Datei
app / Http / routes.php
.// Beispiel 1 // Anmelde-URL http://www.example.com/account/login // Abmelde-URL http://www.example.com/account/logout // Registrierungs-URL http: //www.example. de / account / register Route :: Steuerungen (['account' => 'Auth \ AuthController', 'password' => 'Auth \ PasswordController',]); // Beispiel 2 // Anmelde-URL http://www.example.com/login // Abmelde-URL http://www.example.com/logout // Registrierungs-URL http://www.example.com/register Route :: controller (["=> 'Auth \ AuthController', 'password' => 'Auth \ PasswordController',]); // Beispiel 3 // alle Routen neu definieren Route :: get ('example / register', 'Auth \ AuthController @ getRegister '); Route :: post (' example / register ',' Auth \ AuthController @ postRegister '); Route :: get (' example / login ',' Auth \ AuthController @ getLogin '); Route :: post ('example / login', 'Auth \ AuthController @ postLogin'); Route :: get ('example / logout', 'Auth \ AuthController @ getLogout'); Route :: get ('example / email', 'Auth \ PasswordController @ getEmail '); Route :: post (' example / email ',' Auth \ PasswordController @ postEmail '); Route :: get (' example / reset / code ',' Auth \ PasswordController @ getReset ') ; Route :: post ('example / reset', 'Auth \ PasswordController @ postReset');Denken Sie auch daran, die URIs in Ihren Ansichten und E-Mail-Vorlagen mithilfe der Laravel-Helfer dynamisch aufzurufen. Wie das geht, erfahren Sie im GitHub-Repository dieses Schnelltipps.
Abschließende Gedanken
Mit der Funktion zum Zurücksetzen des Passworts wird der Link zum Zurücksetzen des Passworts an die E-Mail des Benutzers gesendet. Stellen Sie daher sicher, dass die E-Mail-Konfiguration in Ihrem Laravel-Projekt eingerichtet ist. Die Ansichtsvorlage für die E-Mail zum Zurücksetzen des Kennworts befindet sich unter
resources / views / emails / password.blade.php
. Sie können auch einige andere grundlegende Optionen in konfigurierenconfig / auth.php
Datei.Ich hoffe, Sie fanden diesen schnellen Tipp leicht zu folgen. Bis zu meinem nächsten Tuts + Stück, fröhliche Kodierung!
Wenn Sie zusätzliche Hilfe bei der Behebung von Fehlern oder Anpassungen benötigen, die Ihnen unangenehm sind, wenden Sie sich an einen der PHP-Dienstanbieter von Envato Studio. Sie können schnell und zuverlässig bei einer Vielzahl von Problemen helfen, so dass Sie sich mit einer kleinen Geldinvestition viel Zeit sparen können!
PHP-Dienstleister in Envato Studio