middleware使用

(1)生成中间件:

php artisan make:middleware TestMiddleWare

<?php

  namespace App\Http\Middleware;

  use Closure;

class TestMiddleWare
{
  /**
   * Handle an incoming request.
   *
   * @param \Illuminate\Http\Request $request
   * @param \Closure $next
   * @return mixed
   */
  public function handle($request, Closure $next)
  {
    return $next($request);
  }
}

(2)通过重写handle方法定义中间件的作用

public function handle($request, Closure $next)
{
     // 执行动作
echo "<br>hello from middleware 'TestMiddleWare' <br>"; return $next($request); }

public function handle($request, Closure $next)
{
       return $next($request);
// 执行动作
}
可以选择中间件的执行时间,也就是说,可以选择先执行请求还是先执行中间件的一些代码。

(3)当中间件的代码做好之后,把中间件配置到app/Http/kernel.php的中间件数组中,比如配置在路由中间件数组中

rotected $routeMiddleware = [
'testm' => \App\Http\Middleware\TestMiddleWare::class,

];

(4)在路由中使用中间件:

Route::get('/test/testmiddleware/{var}',['middleware'=>'testm',function($var){
echo "$var".' '.env('TEST');
}]);

(5)测试

----------------------------------------------------------------------------------------

对控制器使用中间件最好的方式是写在控制器的构造方法中:

class UserController extends Controller
{
    /**
     * 实例化一个新的 UserController 实例
     *
     * @return void
     */
    public function __construct()
    {
        $this->middleware('auth');

        $this->middleware('log', ['only' => ['fooAction', 'barAction']]);

        $this->middleware('subscribed', ['except' => ['fooAction', 'barAction']]);
    }
}

-----------------------------------------------------------
that's all

 

 

 

posted on 2017-03-06 19:35  blbl9527  阅读(208)  评论(0)    收藏  举报

导航


github sina微博 FB