Heim  >  Artikel  >  PHP-Framework  >  Benutzerauthentifizierung und Autorisierung mit Laravel: Sichern Sie Ihre Anwendung

Benutzerauthentifizierung und Autorisierung mit Laravel: Sichern Sie Ihre Anwendung

WBOY
WBOYOriginal
2023-08-12 23:55:531546Durchsuche

Benutzerauthentifizierung und Autorisierung mit Laravel: Sichern Sie Ihre Anwendung

Benutzerauthentifizierung und -autorisierung mit Laravel: Schutz der Anwendungssicherheit

Zitat:

Für viele Webanwendungen sind Benutzerauthentifizierung und -autorisierung wichtige Komponenten der Datensicherheit und Zugriffskontrolle. Das Laravel-Framework bietet leistungsstarke und flexible Mechanismen zur Benutzerauthentifizierung und -autorisierung, sodass Entwickler Anwendungen einfach vor unbefugtem Zugriff schützen können.

In diesem Artikel erfahren Sie, wie Sie die Authentifizierungs- und Autorisierungsfunktionen von Laravel verwenden, um Ihre Anwendung zu sichern, und stellen einige praktische Codebeispiele bereit.

1. Benutzerauthentifizierung

Bei der Benutzerauthentifizierung wird die Identität des Benutzers überprüft, um sicherzustellen, dass es sich bei dem Benutzer um einen legitimen Anwendungsbenutzer handelt. Laravel bietet ein integriertes Authentifizierungssystem, mit dem Funktionen wie Benutzerregistrierung, Anmeldung und Passwortzurücksetzung problemlos implementiert werden können.

  1. Benutzermodell und Datenbankmigration einrichten

Zuerst müssen wir ein Benutzermodell und eine entsprechende Datenbankmigration erstellen. Führen Sie den folgenden Befehl im Terminal aus, um das Benutzermodell und die Datenbankmigrationen zu generieren:

php artisan make:model User -m

Dadurch wird eine User.php-Modelldatei im App-Verzeichnis und eine Datenbankmigrationsdatei im Verzeichnis „database/migrations“ zum Erstellen der Benutzertabelle generiert.

Bearbeiten Sie die generierte Migrationsdatei und ändern Sie den Code in der up()-Methode wie folgt:

public function up()
{
    Schema::create('users', function (Blueprint $table) {
        $table->id();
        $table->string('name');
        $table->string('email')->unique();
        $table->timestamp('email_verified_at')->nullable();
        $table->string('password');
        $table->rememberToken();
        $table->timestamps();
    });
}

Führen Sie dann den Migrationsbefehl aus, um die Benutzertabelle zu erstellen:

php artisan migrate
  1. Erstellen Sie den Authentifizierungscontroller und sehen Sie ihn an

Als nächstes führen wir Es muss ein Authentifizierungscontroller und entsprechende Ansichten erstellt werden, die Vorgänge wie Benutzerregistrierung, Anmeldung und Kennwortzurücksetzung verarbeiten. Führen Sie den folgenden Befehl aus, um einen Auth-Controller zu generieren:

php artisan make:controller AuthController

Im generierten AuthController-Controller können wir die integrierten AuthTraits von Laravel verwenden, um die Authentifizierungslogik zu verwalten. Stellen Sie sicher, dass Sie den folgenden Namespace in Ihrem Controller einführen:

use IlluminateFoundationAuthAuthenticatesUsers;
use IlluminateFoundationAuthRegistersUsers;
use IlluminateFoundationAuthResetsPasswords;

Anschließend können wir im AuthController einige Methoden definieren, um die Benutzerauthentifizierung durchzuführen. Hier sind einige Beispiele für häufig verwendete Methoden:

// 注册用户
public function register(Request $request)
{
    // 实现用户注册逻辑
}

// 用户登录
public function login(Request $request)
{
    // 实现用户登录逻辑
}

// 用户登出
public function logout(Request $request)
{
    // 实现用户登出逻辑
}

// 密码重置
public function resetPassword(Request $request)
{
    // 实现密码重置逻辑
}

Wir müssen auch einige Ansichten erstellen, um die Registrierungs-, Anmelde- und Passwort-Reset-Formulare anzuzeigen. Diese Ansichten können mit dem folgenden Befehl generiert werden:

php artisan make:auth

Nachdem der obige Befehl ausgeführt wurde, generiert Laravel automatisch die relevanten Ansichtsdateien, einschließlich register.blade.php, login.blade.php, Passwortordner usw.

  1. Routing-Einstellungen

Nach Abschluss der obigen Schritte müssen wir das entsprechende Routing konfigurieren, um Benutzerauthentifizierungsanfragen zu verarbeiten. In der Datei „routes/web.php“ können Sie die folgende Beispielroute hinzufügen:

// 显示注册表单
Route::get('/register', 'AuthController@showRegistrationForm')->name('register');
// 处理用户注册
Route::post('/register', 'AuthController@register');

// 显示登录表单
Route::get('/login', 'AuthController@showLoginForm')->name('login');
// 处理用户登录
Route::post('/login', 'AuthController@login');

// 用户登出
Route::post('/logout', 'AuthController@logout')->name('logout');

// 显示密码重置链接请求表单
Route::get('/password/reset', 'AuthController@showLinkRequestForm')->name('password.request');
// 处理密码重置链接请求
Route::post('/password/email', 'AuthController@sendResetLinkEmail')->name('password.email');

// 显示密码重置表单
Route::get('/password/reset/{token}', 'AuthController@showResetForm')->name('password.reset');
// 处理密码重置请求
Route::post('/password/reset', 'AuthController@resetPassword')->name('password.update');

Zu diesem Zeitpunkt haben wir die für die Benutzerauthentifizierung erforderliche Grundkonfiguration abgeschlossen. Durch Aufruf der entsprechenden URL im Browser können Sie diese Funktionen zur Registrierung, Anmeldung und zum Zurücksetzen von Passwörtern nutzen.

2. Benutzerautorisierung

Bei der Benutzerautorisierung wird festgestellt, ob ein Benutzer das Recht hat, auf bestimmte Ressourcen zuzugreifen oder bestimmte Vorgänge auszuführen. Die Autorisierungsfunktion von Laravel bestimmt Berechtigungen basierend auf den Identitätsinformationen und der Rolle des Benutzers und bietet einen einfachen und benutzerfreundlichen Mechanismus zur Berechtigungskontrolle.

  1. Berechtigungsmodell und Datenbankmigration definieren

Zuerst müssen wir ein Berechtigungsmodell und eine entsprechende Datenbankmigration erstellen. Führen Sie den folgenden Befehl im Terminal aus, um das Berechtigungsmodell und die Datenbankmigrationen zu generieren:

php artisan make:model Permission -m

Dadurch wird eine Permission.php-Modelldatei im App-Verzeichnis und eine Datenbankmigrationsdatei im Verzeichnis „database/migrations“ zum Erstellen der Berechtigungstabelle generiert.

Bearbeiten Sie die generierte Migrationsdatei und ändern Sie den Code in der up()-Methode wie folgt:

public function up()
{
    Schema::create('permissions', function (Blueprint $table) {
        $table->id();
        $table->string('name');
        $table->string('slug');
        $table->timestamps();
    });
}

Führen Sie dann den Migrationsbefehl aus, um die Berechtigungstabelle zu erstellen:

php artisan migrate
  1. Erstellen Sie die Autorisierungsrichtlinie und Middleware.

Als nächstes führen wir Sie müssen eine Autorisierungsrichtlinie erstellen, um die Beziehung zwischen Benutzerrollen und Berechtigungen zu definieren, und eine Autorisierungs-Middleware erstellen, um zu überprüfen, ob Benutzer berechtigt sind, auf bestimmte Ressourcen zuzugreifen.

Führen Sie den folgenden Befehl aus, um eine Autorisierungsrichtlinie zu generieren:

php artisan make:policy PostPolicy

In der generierten PostPolicy-Datei können wir einige Methoden definieren, um zu bestimmen, ob der Benutzer die Berechtigung zum Zugriff auf bestimmte Ressourcen hat. Hier ist ein Beispiel:

public function view(User $user, Post $post)
{
    // 判断用户是否有权限查看指定的文章
    return $user->can('view-post');
}

Dann müssen wir eine Autorisierungs-Middleware erstellen, um die Berechtigungen des Benutzers zu überprüfen. Führen Sie den folgenden Befehl aus, um eine Middleware zu generieren:

php artisan make:middleware CheckPermission

In der generierten CheckPermission-Middleware-Datei können wir eine benutzerdefinierte Logik implementieren, um zu bestimmen, ob der Benutzer die Berechtigung zum Zugriff auf eine bestimmte Ressource hat. Hier ist ein Beispiel:

public function handle($request, Closure $next, $permission)
{
    if (! $request->user()->can($permission)) {
        abort(403, 'Unauthorized');
    }

    return $next($request);
}
  1. Autorisierungsrichtlinie und Middleware konfigurieren

Nach Abschluss der obigen Schritte müssen wir auch die Autorisierungsrichtlinie und Middleware in den relevanten Modellen und Routen konfigurieren.

In der Datei app/Providers/AuthServiceProvider.php müssen wir die Autorisierungsrichtlinie registrieren. Suchen Sie das Attribut $policies und fügen Sie den folgenden Code hinzu:

protected $policies = [
    'AppMode' => 'AppPoliciesModePolicy',
];

In der Datei „routes/web.php“ können Sie die Methode middleware() verwenden, um Autorisierungs-Middleware anzuwenden. Das Folgende ist ein Beispiel:

Route::group(['middleware' => 'auth'], function () {
    Route::get('/posts/{post}', 'PostController@show')->middleware('can:view,post');
});

Im obigen Beispiel setzen wir den Wert, der dem Schlüsselwert „Middleware“ entspricht, auf „can:view,post“, was bedeutet, dass beim Zugriff auf die angegebene Route die Middleware „Auth“ dies tut Zunächst wird die Benutzeridentität überprüft und anschließend überprüft, ob der Benutzer über die Berechtigung zum Zugriff auf eine bestimmte Ressource verfügt.

Zusammenfassung:

Die Verwendung von Laravel zur Benutzerauthentifizierung und -autorisierung ist ein wichtiger Schritt zum Schutz der Anwendungssicherheit und Zugriffskontrolle. Durch das integrierte Authentifizierungssystem und die Autorisierungsfunktionen von Laravel können Entwickler Benutzerregistrierung, Anmeldung, Passwortzurücksetzung und andere Funktionen einfach implementieren und sicherstellen, dass die Ressourcen, auf die Benutzer zugreifen, legal sind und durch Autorisierungsrichtlinien und Middleware geschützt sind. Das Obige ist eine einfache Demonstration. Sie können sie entsprechend den tatsächlichen Anforderungen weiter anpassen und erweitern.

Referenzlink: https://laravel.com/docs/authentication

Das obige ist der detaillierte Inhalt vonBenutzerauthentifizierung und Autorisierung mit Laravel: Sichern Sie Ihre Anwendung. 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