Maison  >  Article  >  cadre php  >  Comment Laravel vérifie-t-il le routage de l'accès à la connexion via un middleware

Comment Laravel vérifie-t-il le routage de l'accès à la connexion via un middleware

藏色散人
藏色散人avant
2020-07-06 13:48:294120parcourir

La colonne tutorielle suivante de Laravel présentera Laravel à la connexion et à l'accès via le routage de vérification middleware. J'espère qu'elle sera utile aux amis dans le besoin !

Comment Laravel vérifie-t-il le routage de l'accès à la connexion via un middleware

Que fait le middleware

Le middleware fournit un mécanisme pratique pour filtrer les requêtes HTTP entrant dans une application.
Par exemple, Laravel inclut un middleware qui authentifie les utilisateurs. Si l'utilisateur ne parvient pas à s'authentifier, le middleware redirigera l'utilisateur vers la page de connexion. D'un autre côté, si l'utilisateur réussit la vérification, le middleware transmettra la demande à l'application.
Bien entendu, en plus de la vérification d'identité, d'autres middlewares peuvent également être écrits pour effectuer diverses tâches. Par exemple : le middleware CORS peut être chargé d’ajouter des en-têtes de réponse appropriés à toutes les réponses renvoyées par l’application. Le middleware de journalisation peut enregistrer toutes les demandes entrant dans votre application.
Laravel est livré avec certains middleware, notamment l'authentification, la protection CSRF, etc. Tous ces middlewares se trouvent dans le répertoire app/Http/Middleware.

Créer un middleware

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

Enregistrer un middleware

Middleware global
Si vous souhaitez que le middleware soit utilisé dans votre application S'exécute pendant le traitement de chaque requête HTTP. Répertoriez simplement le middleware dans l'attribut $middleware dans app/Http/Kernel.php.
Attribuer un middleware aux routes
Supposons que vous souhaitiez attribuer un middleware à une route spécifiée, vous devez d'abord attribuer une clé au middleware dans le fichier app/Http/Kernel.php. Par défaut, le middleware intégré de Laravel est inclus sous l'attribut $routeMiddleware dans cette classe. Pour ajouter un middleware personnalisé, ajoutez-le simplement à la liste et attribuez-lui une clé personnalisée. Par exemple :

// 在 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,];

Écriture du middleware

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

Utilisation du middleware dans le routage

//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');});

De cette façon, nous pouvons facilement déterminez si l'utilisateur est connecté en arrière-plan et accédez automatiquement à la page de connexion s'il n'est pas connecté !

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer