Laravel 的中间件

1、创建中间件:

php artisan make:middleware CheckBackendLogin

 

会在application/http/middleware下生成Check.php中间件,我们编辑内容。

—— 以下例子属于后执行中间件,就是各种条件都不满足,才会跳转目标页。

<?php

namespace app\http\middleware;

class CheckBackendLogin
{
    public function handle($request, \Closure $next)
    {
        if ($request->param('name') == 'a') {
            return redirect('index/index/index');
        }elseif ($request->param('name') == 'b'){
            return redirect('index/index/hello');
        }

        return $next($request);
    }
}

—— 表示参数为a则跳转到index/index/index,参数为b则跳转到index/index/hello,否则跳转到目标页面。

—— 真实场景举例:时间没到跳转到等待界面,时间已过跳转到过期界面,时间符合才访问目标界面。

 

2、添加路由到app\Http\Kernel.php中的 $routeMiddleware 参数里面

protected $routeMiddleware = [
    ...

    'checkBackendLogin' => \App\Http\Middleware\CheckBackendLogin::class,
];

 

3、创建路由:向路由添加中间件 CheckBackendLogin 

// 单个
Route::rule('check/:name','index/index/check')
    ->middleware(['check']);

// 群组:
Route::middleware(['checkBackendLogin'])->group(function () {
    // 后台欢迎页
    Route::get('backend/', 'Backend\IndexController@index');
    // 测试页面
    Route::get('backend/test', 'Backend\TestController@index');
    Route::get('backend/test/create', 'Backend\TestController@create');
});

 

 

// 在控制器中使用中间件:—— 在构造方法中执行中间件

class UserController extends Controller
{
    public function __construct()
    {
        $this->middleware('auth');    //使用 auth 中间件
        $this->middleware('log')->only('index');    //使用log 中间件,并且只在 index 方法中使用
        $this->middleware('log')->except('store');    //使用log中间件,并排除 store 方法
    }
}

 

 

 

 

 —— 更多的请参考文档。

 

 

 

 

 

————占位符

posted @ 2018-09-21 14:28  小寒1206  阅读(301)  评论(0编辑  收藏  举报