Heim  >  Artikel  >  PHP-Framework  >  Entdecken Sie den Autorisierungsmechanismus und die Implementierungsmethoden in Laravel

Entdecken Sie den Autorisierungsmechanismus und die Implementierungsmethoden in Laravel

PHPz
PHPzOriginal
2023-04-21 10:06:22682Durchsuche

Laravel ist ein beliebtes PHP-Framework, das zum Erstellen verschiedener Arten von Webanwendungen verwendet wird. Wenn Sie Webanwendungen erstellen, müssen Sie häufig Benutzer und Ressourcen verwalten und schützen, was die Verwaltung von Zugriffsberechtigungen erfordert.

Laravel bietet eine einfache, aber leistungsstarke Authentifizierungs- und Autorisierungsmethode, mit der Benutzern der Anwendung problemlos verschiedene Berechtigungsstufen gewährt werden können. In diesem Artikel werden wir den Autorisierungsmechanismus in Laravel und seine Implementierung untersuchen.

Was ist Laravel-Autorisierung?

Autorisierung bezieht sich auf den Prozess der Definition und Implementierung der Zugriffskontrolle in einer Anwendung. Dazu gehört die Bestätigung, wer der Benutzer ist, die Validierung seiner Identität und die Bestätigung, dass ihm Zugriff auf freigegebene Ressourcen gewährt wird.

In Laravel bezieht sich Autorisierung auf die spezifischen Aktionen, die ein Benutzer ausführen kann, oder auf die spezifischen Ressourcen, auf die er zugreifen kann. Es wird basierend auf der Rolle oder Lizenz des Benutzers zum Schutz sensibler Vorgänge oder Ressourcen innerhalb der Anwendung bestimmt.

Arten der Laravel-Autorisierung

In Laravel gibt es zwei Arten der Autorisierung: Middleware-Autorisierung und Richtlinienautorisierung.

Middleware-Autorisierung

Die Middleware-Autorisierung wird über den Middleware-Mechanismus von Laravel implementiert. Middleware ist ein Codestück, das zwischen einer HTTP-Anfrage und einer Antwort ausgeführt wird und zum Ausführen verschiedener Aufgaben wie Anforderungsvalidierung, Autorisierung, Protokollierungsvorgänge usw. verwendet werden kann.

Bei Verwendung der Middleware-Autorisierung prüft jede Middleware bestimmte Bedingungen. Wenn die Bedingung nicht erfüllt ist, lehnt die Middleware die Anfrage ab und Sie können den Benutzer zur Anmeldeseite oder einer anderen Fehlerseite umleiten.

Policy Authorization

Policy Authorization ist ein diskretes Autorisierungssystem, das jedes Modell in Ihrer Anwendung repräsentiert. Bei Verwendung der Richtlinienautorisierung können Sie Nutzungsrechte für jedes Modell definieren, z. B. das Lesen, Erstellen, Aktualisieren und Löschen von Daten.

Bei Verwendung der Richtlinienautorisierung können Sie Methoden zur Handhabung der Autorisierungslogik festlegen. Wenn die Autorisierungsprüfung fehlschlägt, löst Laravel automatisch eine 403 Forbidden-Ausnahme aus. 403 Forbidden 异常。

Laravel 授权的实现

中间件授权

要使用中间件授权,请实现中间件并将其添加到路由中。中间件应该检查特定的条件,并在条件不满足时停止请求。

以下是一个示例中间件实现,它检查用户是否拥有特定的角色:

namespace App\Http\Middleware;

use Closure;
use Illuminate\Support\Facades\Auth;

class RoleMiddleware
{
    public function handle($request, Closure $next, $role)
    {
        if (! Auth::user()->hasRole($role)) {
            return redirect('/home');
        }

        return $next($request);
    }
}

要使用此中间件,请将其注册到 app/Http/Kernel.php 文件中的 $routeMiddleware 属性中。

protected $routeMiddleware = [
    'role' => \App\Http\Middleware\RoleMiddleware::class,
];

现在,您可以在路由中使用 role 中间件了。

Route::group(['middleware' => ['role:admin']], function () {
    Route::get('/dashboard', function () {
        // Your code
    });
});

上面的代码会检查用户是否拥有 admin 角色,并在没有权限的情况下重定向到主页。您可以根据需要修改中间件实现。

策略授权

策略授权是与模型相关的离散授权系统。您必须遵循以下几个步骤来实现策略授权:

  1. 生成策略

使用 make:policy 命令生成策略类:

php artisan make:policy ArticlePolicy --model=Article

此命令将在 app/Policies 目录中创建一个名为 ArticlePolicy 的类。您可以在该类中指定每个 Article 模型的授权逻辑。

  1. 注册策略

app/Providers/AuthServiceProvider.php 文件的 $policies 属性中注册策略:

use App\Article;
use App\Policies\ArticlePolicy;

protected $policies = [
    Article::class => ArticlePolicy::class,
];
  1. 创建授权方法

现在,您可以在策略中实现授权逻辑了。例如,您可以创建一个可以编辑文章的方法:

public function update(User $user, Article $article)
{
    return $user->id === $article->user_id;
}

上面的代码检查当前用户是否是文章作者,如果是,则可以修改文章。如果不是,则无法访问文章编辑页面。

要在控制器中使用策略授权,请在访问 update 方法之前调用 authorize 方法:

public function update(Article $article, Request $request)
{
    $this->authorize('update', $article);

    // Your code
}

上面的代码会检查用户是否有权限修改文章,如果没有则会抛出 403 Forbidden

Laravel-Autorisierungsimplementierung

Middleware-Autorisierung

Um die Middleware-Autorisierung zu verwenden, implementieren Sie die Middleware und fügen Sie sie Ihrer Route hinzu. Die Middleware sollte nach bestimmten Bedingungen suchen und die Anfrage stoppen, wenn die Bedingungen nicht erfüllt sind.

Hier ist eine Beispiel-Middleware-Implementierung, die prüft, ob der Benutzer eine bestimmte Rolle hat: 🎜rrreee🎜Um diese Middleware zu verwenden, registrieren Sie sie in der app/Http/Kernel.php-Datei $routeMiddleware -Attribut. 🎜rrreee🎜Jetzt können Sie die role-Middleware in Ihren Routen verwenden. 🎜rrreee🎜Der obige Code prüft, ob der Benutzer die Rolle admin hat, und leitet andernfalls zur Startseite weiter. Sie können die Middleware-Implementierung nach Bedarf ändern. 🎜🎜Richtlinienautorisierung🎜🎜Richtlinienautorisierung ist ein diskretes Autorisierungssystem, das sich auf das Modell bezieht. Sie müssen die folgenden Schritte ausführen, um die Richtlinienautorisierung zu implementieren: 🎜
  1. Richtlinie generieren
🎜Verwenden Sie den Befehl make:policy, um die Richtlinienklasse zu generieren: 🎜rrreee 🎜Dieser Befehl erstellt eine Klasse mit dem Namen ArticlePolicy im Verzeichnis app/Policies. Sie können die Autorisierungslogik für jedes Article-Modell in dieser Klasse angeben. 🎜
  1. Registrierungsrichtlinie
🎜Im $policies-Attribut des app/Providers/AuthServiceProvider.php Datei Registrieren Sie die Richtlinie in: 🎜rrreee
  1. Autorisierungsmethode erstellen
🎜Jetzt können Sie die Autorisierungslogik in der Richtlinie implementieren. Sie könnten beispielsweise eine Methode erstellen, die einen Artikel bearbeiten kann: 🎜rrreee🎜Der obige Code prüft, ob der aktuelle Benutzer der Autor des Artikels ist, und kann in diesem Fall den Artikel ändern. Andernfalls kann nicht auf die Artikelbearbeitungsseite zugegriffen werden. 🎜🎜Um die Richtlinienautorisierung im Controller zu verwenden, rufen Sie bitte die Methode authorize auf, bevor Sie auf die Methode update zugreifen: 🎜rrreee🎜Der obige Code prüft, ob der Benutzer die Berechtigung zum Ändern hat Wenn nicht, wird eine 403 Forbidden-Ausnahme ausgelöst. 🎜🎜Zusammenfassung🎜🎜Laravel bietet einen einfachen, aber leistungsstarken Autorisierungsmechanismus, der es uns ermöglicht, problemlos verschiedene Berechtigungsstufen für Benutzer der Anwendung zu definieren. Middleware-Autorisierung und Richtlinienautorisierung sind zwei Arten der Laravel-Autorisierung, die unterschiedliche Szenarien abdecken können. 🎜🎜Durch die Einleitung dieses Artikels glaube ich, dass Sie das Konzept und die Implementierungsmethode der Laravel-Autorisierung beherrschen. Wenn Sie eine Webanwendung erstellen, die eine Benutzerrechteverwaltung erfordert, wird dieses Wissen Ihre Waffe sein. 🎜

Das obige ist der detaillierte Inhalt vonEntdecken Sie den Autorisierungsmechanismus und die Implementierungsmethoden in Laravel. 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