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
浙公网安备 33010602011771号