Heim  >  Artikel  >  PHP-Framework  >  Wie überprüft Laravel den Routing-Anmeldezugriff über Middleware?

Wie überprüft Laravel den Routing-Anmeldezugriff über Middleware?

藏色散人
藏色散人nach vorne
2020-07-06 13:48:294099Durchsuche

Die folgende Tutorial-Kolumne von Laravel stellt die Anmeldung und den Zugriff von Laravel über das Routing der Middleware-Verifizierung vor. Ich hoffe, dass es für Freunde in Not hilfreich sein wird!

Wie überprüft Laravel den Routing-Anmeldezugriff über Middleware?

Was macht Middleware?

Middleware bietet einen praktischen Mechanismus zum Filtern von HTTP-Anfragen, die in eine Anwendung eingehen.
Laravel enthält beispielsweise eine Middleware, die Benutzer authentifiziert. Wenn die Authentifizierung des Benutzers fehlschlägt, leitet die Middleware den Benutzer zur Anmeldeseite weiter. Ist der Benutzer hingegen authentifiziert, leitet die Middleware die Anfrage weiter an die Anwendung weiter.
Natürlich kann neben der Identitätsprüfung auch andere Middleware geschrieben werden, um verschiedene Aufgaben auszuführen. Beispielsweise kann die CORS-Middleware dafür verantwortlich sein, allen von der Anwendung zurückgegebenen Antworten entsprechende Antwortheader hinzuzufügen. Die Protokollierungs-Middleware kann alle in Ihrer Anwendung eingehenden Anforderungen protokollieren.
Laravel wird mit einiger Middleware geliefert, einschließlich Authentifizierung, CSRF-Schutz usw. Die gesamte Middleware befindet sich im Verzeichnis app/Http/Middleware.

Middleware erstellen

//使用 make:middleware 命令来创建新的中间件。php artisan make:middleware Auth

Middleware registrieren

Globale Middleware
Wenn Sie möchten, dass die Middleware in Ihrem verwendet wird Anwendung Wird während der Verarbeitung jeder HTTP-Anfrage ausgeführt. Listen Sie einfach die Middleware im Attribut $middleware in app/Http/Kernel.php auf.
Middleware Routen zuweisen
Angenommen, Sie möchten Middleware einer bestimmten Route zuweisen, sollten Sie der Middleware zunächst einen Schlüssel in der Datei app/Http/Kernel.php zuweisen. Standardmäßig ist die integrierte Middleware von Laravel im Attribut $routeMiddleware dieser Klasse enthalten. Um eine benutzerdefinierte Middleware hinzuzufügen, hängen Sie sie einfach an die Liste an und weisen Sie ihr einen benutzerdefinierten Schlüssel zu. Zum Beispiel:

// 在 App\Http\Kernel 类中...protected $routeMiddleware = [
    'auth' => \App\Http\Middleware\Authenticate::class,
    'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
    'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class,
    'cache.headers' => \Illuminate\Http\Middleware\SetCacheHeaders::class,
    'can' => \Illuminate\Auth\Middleware\Authorize::class,
    'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
    'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class,
    'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
    'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class,];

Schreiben von Middleware

public function handle($request, Closure $next)
 {
 		//通过判断session是否有用户名,判断是否登陆
       if(!session('user')){
            return redirect('/');
        }
        return $next($request);
 }

Verwendung von Middleware beim Routing

//namespace是命名空间,也就是你的controller文件在哪个文件夹里//middleware对应的就是你想调用的中间件,这里调用的是登录验证的中间件//auth就是你在App\Http\Kernel类中注册的名字Route::group(['namespace' => 'Admin', 'middleware' => ['auth']], function () {
    //后台首页
    Route::get('admin','admincontroller@index')->name('admin');
    //清除缓存路由
    Route::get('admin/clear','admincontroller@clear')->name('clear');
    //栏目资源路由
    Route::resource('admin/classify','classifycontroller');
    //公告资源路由
    Route::resource('admin/notice','classifynoticecontroller');});

Auf diese Weise können wir Sie ganz einfach Stellen Sie fest, ob der Benutzer im Hintergrund angemeldet ist, und springen Sie automatisch zur Anmeldeseite, wenn er nicht angemeldet ist!

Das obige ist der detaillierte Inhalt vonWie überprüft Laravel den Routing-Anmeldezugriff über Middleware?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:csdn.net. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen