周大胖子 发表于 2019-6-3 18:22:42

laravel 中间件的使用

// 创建中间件的测试
// 1.创建中间件
//      php artisan make:middleware LaomoToken 创建了一个名叫 LaomoToken 的中间件
//      中间件所在位置:app/Http/Comtrollers/Middleware/LaomoToken.php
//
// 2.确认中间件的【执行顺序】,是过滤 输入 还是过滤输出。
//      2.1 如果过滤输入 : return $next($request);
//      2.2 如果过滤输出 : return $response;
//
// 3.注册中间件三类
//      3.1 如果是 全局中间件
//          注册三类:将相应的中间件类添加到 app/Http/Kernel.php 的数组属性 $middleware
//            例:
//               protected $middleware = [
//                      LaomoToken::class,
//            ];
//      
//      3.2 分配中间件到指定路由   
//            3.2.1 在 app/Http/Kernel.php 文件中分配给该中间件一个 key 追加到routeMiddleware中
//            例:
//                  protected $routeMiddleware = [
//                         'lma' => \App\Http\Middleware\LaomoToken::class
//                  ];
//            
//      3.3 分配到指定路由
//         
//            3.3。1 分配方式1 【键】偷个懒用两个中间件试试
//            例:
//                  Route::get('/', function () {
//            
//            
//                     })->middleware('lma', 'auth');
//                     
//            3.3.2 分配方式 完整类名【不推荐】
//            
//                      })->middleware('lma', 'auth');
//            
//            3.3.3
//      
//       3.4 中间件组   【指定一个键名的方式将相关中间件分到同一个组里面】
//                      [存在意义:中间件组的目的只是让一次分配给路由多个中间件的实现更加方便]
//      
//            操作:在 HTTP Kernel 提供的 $middlewareGroups追加
//         
//                      'blog' => [
//                        'lma',
//                      ]
//      
//       4.中间件参数                  
//      
//            用处吗,例如权限判断之流
//                  
//                  中间件参数可以在定义路由时通过 : 分隔中间件名和参数名来指定,多个中间件参数可以通过逗号分隔:
//      
//                   Route::put('post/{id}', function ($id) {
//
//                  })->middleware('role:editor');
//      
//      5.终端中间件【善后中间件,比方说 session 设置的】
//         
//         方式: 添加 terminate 方法
//          class StartSession
//          {
//            public function handle($request, Closure $next)
//            {
//                  return $next($request);
//               }
//
//            public function terminate($request, $response)
//            {
//               // 存储session数据...
//            }
//          }
//      

页: [1]
查看完整版本: laravel 中间件的使用