云服务器

laravel学习笔记3-中间件

2017-12-25 15:49:26 0

上回简单介绍了路由控制器,本编将会为大家介绍中间件的使用。中间件提供了一种方便的机制来过滤进入应用的 HTTP 请求,我们可以用来处理诸如字符验证、身份验证等等的工作。中间件不单单可以前置执行工作还可以后置执行工作。如我们可以前置验证身份信息,后置处理身份信息是否需要输出前端。

Laravel 已经内置了一些中间件,包括身份验证、CSRF 保护等。所有的中间件都放在 app/Http/Middleware 目录内。

创建中间件

php artisan make:middleware CheckAge

该命令将会在 app/Http/Middleware 目录内新建一个 CheckAge 类。 在这个中间件内,我们定义一个handle方法将 age 参数大于 200 时允许向下执行路由,否则,会将用户请求重定向到 home URI 。

``` <?php

namespace App\Http\Middleware;

use Closure;

class CheckAge { /** * 处理传入的请求 * * @param \Illuminate\Http\Request $request * @param \Closure $next * @return mixed */ public function handle($request, Closure $next) { if ($request->age <= 200) { return redirect('home'); }

    return $next($request);
}

} ```

路由器添加中间件

在 routes/web.php 文件中定义你的 web 页面路由,要给路由组中定义的所有路由分配中间件,可以在路由组中使用 middleware 键,中间件将会依照列表内指定的顺序运行:

Route::group(['middleware' => 'CheckAge'], function () { Route::get('user/addUser/username/xiaohei/age/20', 'UserController@addUser'); });

当我们访问'http://127.0.0.1/blog/public/user/addUser/username/xiaohei/age/20'时,就会验证age的参数是否符合要求,不符合则返回到home当中。

前置中间件 / 后置中间件

中间件运行在请求之前或之后取决于中间件本身。例如,以下中间件会在请求被应用处理 之前 执行一些任务

``` <?php

namespace App\Http\Middleware;

use Closure;

class BeforeMiddleware { public function handle($request, Closure $next) { // 执行动作

    return $next($request);
}

} ```

这个中间件会在请求被应用处理 之后 执行它的任务:

``` <?php

namespace App\Http\Middleware;

use Closure;

class AfterMiddleware { public function handle($request, Closure $next) { $response = $next($request);

    // 执行动作

    return $response;
}

} ```

更多的中间件运用不一一细说,有需要可以到“https://d.laravel-china.org/docs/5.4/middleware”进行查看

 

上一篇: 无

微信关注

获取更多技术咨询