laravel世界的卫士-中间件middleware

laravel世界的卫士-中间件middleware

    中间件可以对请求进行过滤,这里可以利用中间件来验证用户是否登录,如果用户登录则可以继续执行原先想执行的操作,如果没登录则重定向到登录页面,让用户先登录。

    一、定义中间件

    通过 php artsian make:middleware 命令 创建中间件,文件路径: appHttpMiddlewareCheckToken.php

php artisan make:middleware CheckToken
<?php namespace AppHttpMiddleware; use Closure; use IlluminateHttpRequest;  class CheckToken {     /**      * Handle an incoming request.      *      * @param  IlluminateHttpRequest  $request      * @param  Closure  $next      * @return mixed      */     public function handle(Request $request, Closure $next)     {        //在这里做一个判断,如果token不是 &#39;my-secret-token&#39;,则重定向        if ($request->input('token') !== 'my-secret-token') {             return redirect('home');         }         return $next($request);     } }

    二、中间件的分类

  • 前置中间件

<?php namespace AppHttpMiddleware; use Closure; class BeforeMiddleware {     public function handle($request, Closure $next)     {          ...         // 应用请求之前执行一些任务         return $next($request);     } }
  • 后置中间件

<?php namespace AppHttpMiddleware; use Closure; class AfterMiddleware {     public function handle($request, Closure $next)     {         $response = $next($request);         // 应用请求之后执行一些任务         return $response;     } }

    三、中间件的使用

  • 全局使用中间件

//在appHttpKernel.php中的$middleware内添加  protected $middleware = [         // AppHttpMiddlewareTrustHosts::class,         ....         ....         IlluminateFoundationHttpMiddlewareConvertEmptyStringsToNull::class,         //这是之前定义的         AppHttpMiddlewareCheckToken::class,     ];
  • 使用中间件组

//在appHttpKernel.php中的$middlewareGroups内添加   protected $middlewareGroups = [       'web' =&gt; [            ....         ],          'api' =&gt; [            ....         ],         'diy' =&gt;[           //可以在web组和api组中添加,也可以自己diy一个         ]     ]; //路由中使用,RouteServiceProvider 默认将 web 和 api 中间件组自动应用到 routes/web.php 和 routes/api.php Route::get('/u', function () {  })-&gt;middleware('diy');
  • 单独使用中间件

    protected $routeMiddleware = [          ...,          'myself'=&gt; AppHttpMiddlewareCheckToken::class,         ]; Route::get('/user', function () {     // })-&gt;middleware('myself');

    相关视频教程推荐:Laravel 视频教程

© 版权声明
THE END
喜欢就支持一下吧
点赞5 分享