Inhaltsverzeichnis
Was ist Laravel-Autorisierung?
Arten der Laravel-Autorisierung
Middleware-Autorisierung
Policy Authorization
Laravel 授权的实现
中间件授权
策略授权
Heim PHP-Framework Laravel Entdecken Sie den Autorisierungsmechanismus und die Implementierungsmethoden in Laravel

Entdecken Sie den Autorisierungsmechanismus und die Implementierungsmethoden in Laravel

Apr 21, 2023 am 10:06 AM

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);
    }
}
Nach dem Login kopieren

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

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

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

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

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

策略授权

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

  1. 生成策略

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

php artisan make:policy ArticlePolicy --model=Article
Nach dem Login kopieren

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

  1. 注册策略

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

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

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

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

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

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

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

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

    // Your code
}
Nach dem Login kopieren

上面的代码会检查用户是否有权限修改文章,如果没有则会抛出 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!

Erklärung dieser Website
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

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

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

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Was ist besser, Django oder Laravel? Was ist besser, Django oder Laravel? Mar 28, 2025 am 10:41 AM

Sowohl Django als auch Laravel sind Full-Stack-Frameworks. Django eignet sich für Python -Entwickler und komplexe Geschäftslogik, während Laravel für PHP -Entwickler und elegante Syntax geeignet ist. 1.Django basiert auf Python und folgt der "batteriebetriebenen" Philosophie, die für schnelle Entwicklung und hohe Parallelität geeignet ist. 2. Laravel basiert auf PHP, der die Entwicklererfahrung betont und für kleine bis mittlere Projekte geeignet ist.

Laravel und das Backend: Logik der Webanwendungen mit Strom versorgen Laravel und das Backend: Logik der Webanwendungen mit Strom versorgen Apr 11, 2025 am 11:29 AM

Wie spielt Laravel eine Rolle in der Backend -Logik? Es vereinfacht und verbessert die Backend -Entwicklung durch Routing -Systeme, eloquentorm, Authentifizierung und Autorisierung, Ereignis und Zuhörer sowie Leistungsoptimierung. 1. Das Routing -System ermöglicht die Definition der URL -Struktur und die Anforderungsverarbeitungslogik. 2.Loquentorm vereinfacht die Datenbankinteraktion. 3. Das Authentifizierungs- und Autorisierungssystem ist für die Benutzerverwaltung geeignet. 4. Die Ereignis und der Hörer implementieren locker gekoppelte Codestruktur. 5. Leistungsoptimierung verbessert die Anwendungseffizienz durch Zwischenspeicherung und Warteschlange.

Welches ist besser PHP oder Laravel? Welches ist besser PHP oder Laravel? Mar 27, 2025 pm 05:31 PM

PHP und Laravel sind nicht direkt vergleichbar, da Laravel ein PHP-basierter Framework ist. 1.PHP ist für kleine Projekte oder schnelle Prototypen geeignet, da es einfach und direkt ist. 2. Laravel ist für große Projekte oder effiziente Entwicklung geeignet, da es umfangreiche Funktionen und Werkzeuge bietet, aber eine steile Lernkurve aufweist und möglicherweise nicht so gut ist wie reines PHP.

Ist Laravel ein Frontend oder ein Backend? Ist Laravel ein Frontend oder ein Backend? Mar 27, 2025 pm 05:31 PM

LaravelisabackendFrameworkBuiltonPhp, entworfene WebApplicationDevelopment.itfocuseSonserver-Sidelogic, DatabaSemanagement und Applicationsstruktur und CanBeintegratedWithFrontendTechnologies-ähnlich.

Laravels Vielseitigkeit: Von einfachen Standorten zu komplexen Systemen Laravels Vielseitigkeit: Von einfachen Standorten zu komplexen Systemen Apr 13, 2025 am 12:13 AM

Das Laravel -Entwicklungsprojekt wurde aufgrund seiner Flexibilität und Kraft ausgewählt, um den Bedürfnissen unterschiedlicher Größen und Komplexität zu entsprechen. Laravel bietet Routing-System, eloquentorm, Artisan Command Line und andere Funktionen und unterstützt die Entwicklung von einfachen Blogs bis hin zu komplexen Systemen auf Unternehmensebene.

Warum ist Laravel so beliebt? Warum ist Laravel so beliebt? Apr 02, 2025 pm 02:16 PM

Die Popularität von Laravel umfasst seinen vereinfachten Entwicklungsprozess, eine angenehme Entwicklungsumgebung und umfangreiche Merkmale. 1) Es absorbiert die Designphilosophie von RubyonRails und kombiniert die Flexibilität von PHP. 2) Bereitstellung von Werkzeugen wie eloquentorm, Blade Template Engine usw. zur Verbesserung der Entwicklungseffizienz. 3) Sein MVC -Architektur- und Abhängigkeitsinjektionsmechanismus macht den Code modularer und prüfbarer. 4) Bietet leistungsstarke Debugging -Tools und Leistungsoptimierungsmethoden wie Caching -Systeme und Best Practices.

Laravels Hauptfunktion: Backend -Entwicklung Laravels Hauptfunktion: Backend -Entwicklung Apr 15, 2025 am 12:14 AM

Zu den Kernfunktionen von Laravel in der Back-End-Entwicklung gehören Routing-System, eloquentorm, Migrationsfunktion, Cache-System und Warteschlangensystem. 1. Das Routing -System vereinfacht die URL -Zuordnung und verbessert die Codeorganisation und die Wartung. 2.Loquentorm bietet objektorientierte Datenoperationen zur Verbesserung der Entwicklungseffizienz. 3. Die Migrationsfunktion verwaltet die Datenbankstruktur durch Versionskontrolle, um eine Konsistenz zu gewährleisten. 4. Das Cache -System reduziert Datenbankabfragen und verbessert die Reaktionsgeschwindigkeit. 5. Das Warteschlangensystem verarbeitet effektiv große Daten, vermeiden Sie die Blockierung von Benutzeranfragen und verbessern die Gesamtleistung.

Laravel (PHP) gegen Python: Entwicklungsumgebungen und Ökosysteme Laravel (PHP) gegen Python: Entwicklungsumgebungen und Ökosysteme Apr 12, 2025 am 12:10 AM

Der Vergleich zwischen Laravel und Python in der Entwicklungsumgebung und dem Ökosystem ist wie folgt: 1. Die Entwicklungsumgebung von Laravel ist einfach, nur PHP und Komponist sind erforderlich. Es bietet eine umfassende Auswahl an Erweiterungspaketen wie Laravelforge, aber die Wartung des Erweiterungspakets ist möglicherweise nicht rechtzeitig. 2. Die Entwicklungsumgebung von Python ist ebenfalls einfach, nur Python und PIP sind erforderlich. Das Ökosystem ist riesig und deckt mehrere Felder ab, aber das Versions- und Abhängigkeitsmanagement kann komplex sein.

See all articles