Laravel-路由組和中間件

Laravel-路由組和中間件

標籤(空格分隔): php


定義路由組

Route::group(['prefix'=>'Anime'], function(){
    Rout::match(['get', 'post'], 'login', 'Admin\LoginController@login)
    
    Route::group(['middleware'=>'CheckToken', function(){
        Rout::match(['get', 'post'], 'index','Admin\LoginController@index)
        
    })
});


prefix : 路由前綴  對應生成的路由是 /Anime/login
match: http請求方式 get | post | delete
middleware : 中間件

中間件

1 要創建一個新的中間件,可以通過 Artisan 命令 make:middleware:
php artisan make:middleware CheckToken

2 生成文件的位置在 app\Http\Middleware\CheckToken.php
在 handle 方法裏完成你的中間件 如:登錄驗證, 記錄日誌

handle分爲 :中間件之前/之後

3 註冊中間件
app\Http\Kernel.php
    
    註冊在 routeMiddleware 數組中:

    <?php

        namespace App\Http;
        
        use Illuminate\Foundation\Http\Kernel as HttpKernel;
        
        class Kernel extends HttpKernel
        {
            /**
             * The application's global HTTP middleware stack.
             *
             * These middleware are run during every request to your application.
             *
             * @var array
             */
            ###  全局的中間件
            protected $middleware = [
                \Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class,
                \Illuminate\Foundation\Http\Middleware\ValidatePostSize::class,
                \App\Http\Middleware\TrimStrings::class,
                \Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class,
            ];
        
            /**
             * The application's route middleware groups.
             *
             * @var array
             */
             ## 中間件組 \routes\ web => web.php  api=> api.php 文件中所有的路由都必須通過中間件的處理
            protected $middlewareGroups = [
                'web' => [
                    \App\Http\Middleware\EncryptCookies::class,
                    \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
                    \Illuminate\Session\Middleware\StartSession::class,
                    // \Illuminate\Session\Middleware\AuthenticateSession::class,
                    \Illuminate\View\Middleware\ShareErrorsFromSession::class,
                    \App\Http\Middleware\VerifyCsrfToken::class,
                    \Illuminate\Routing\Middleware\SubstituteBindings::class,
                    \App\Http\Middleware\CheckToken::class
                ],
        
                'api' => [
                    'throttle:60,1',
                    'bindings',
                ],
            ];
        
            /**
             * The application's route middleware.
             *
             * These middleware may be assigned to groups or used individually.
             *
             * @var array
             */
             # 路由組中間件
            protected $routeMiddleware = [
                'auth' => \Illuminate\Auth\Middleware\Authenticate::class,
                'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
                'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class,
                'can' => \Illuminate\Auth\Middleware\Authorize::class,
                'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
                'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
                'CheckToken' => \App\Http\Middleware\CheckToken::class,

            ];
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章