先谈一谈中间件的使用场景,比如路由转到一张页面,我们需要记录用户的cookie,或者检测用户的访问权限,这些操作如果全写在控制器里是不合适的,因为随着业务的扩充,控制器里的业务逻辑会越来越臃肿,难以维护,所以,不同的操作,我们分别写在各自的中间件里。我们使用artisan命令行来创建一个中间件。
1 | php artisan make :middleware MyMiddleware |
中间件的php文件都放在了目录\app\Http\Middleware下,大家应该注意到,中间件Middleware和控制器Controller文件夹都在Http文件夹下。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
<?php
|
这里我们只改动handle函数来举例中间件的使用
1 2 3 4 5 |
public function handle( $request , Closure $next )
|
中间件不注册是不能使用的。注册方式有以下两种,取其一即可。
第一种,Kernel.php的$middleware数组中注册,这种注册后,所有的HTTP请求都将可以启动这个中间件,特别适合用在身份认证类的功能上。
1 2 3 4 |
protected $middleware = [
|
第二种,Kernel.php的$routeMiddleware数组中注册,这种注册方式适用于部分指定页面才可以启动这个中间件。
1 2 3 4 5 6 7 8 |
protected $routeMiddleware = [
|
请注意,注册中间件,不是等于启动中间件,注册仅仅是让你能用而已,但是具体调用还是要另外写的。
如果你的View有对应的Controller,就直接在Controller里写。
1 2 3 4 5 6 7 8 9 10 |
class MyController extends Controller
|
如果路由里直接绑定了一个匿名函数,可以修改routes.php
1 2 3 |
Route::get( ‘/index‘ ,[ ‘middleware‘ => ‘mymiddleware‘ , function (){
|