laravel 中间件

来源:互联网 发布:网络投资诈骗 编辑:程序博客网 时间:2024/06/01 09:01

<span style="color: rgb(51, 51, 51); font-family: "Helvetica Neue", Helvetica, Arial, "Hiragino Sans GB", "Hiragino Sans GB W3", "WenQuanYi Micro Hei", "Microsoft YaHei UI", "Microsoft YaHei", sans-serif; font-size: 14px;">当然,除了认证之外,中间件还可以被用来处理更多其它任务。比如:CORS 中间件可以用于为离开站点的响应添加合适的头(跨域);日志中间件可以记录所有进入站点的请求。</span>

Laravel框架自带了一些中间件,包括维护模式、认证、CSRF 保护中间件等等。所有的中间件都位于app/Http/Middleware 目录。


要创建一个新的中间件,可以通过 Artisan 命令 make:middleware

这个命令会在 app/Http/Middleware 目录下创建一个新的中间件类 OldMiddleware

不过我还是通过手动创建来加强理解:

1.首先,在 app/Http/Middleware 目录下创建一个我们自己的中间件,我这里创建一个名为TestMiddleware.php 的中间件,用来做测试用,输出一句hello,代码如下:

<?php/** * Created by PhpStorm. * User: Administrator * Date: 2016/10/31 * Time: 16:28 */namespace App\Http\Middleware;use Closure;class TestMiddleware{    /**     * 测试中间件     *     * @param  \Illuminate\Http\Request  $request     * @param  \Closure  $next     * @return mixed     *     */    public function handle($request, Closure $next)    {        echo 'hello laravel middleware';        return $next($request);    }}

2.注册中间件

全局中间件

如果你想要中间件在每一个 HTTP 请求期间被执行,只需要将相应的中间件类设置到 app/Http/Kernel.php 的数组属性 $middleware 中即可。

分配中间件到路由

如果你想要分配中间件到指定路由,首先应该在 app/Http/Kernel.php 文件中分配给该中间件一个简写的 key,默认情况下,该类的 $routeMiddleware 属性包含了 Laravel 内置的入口中间件,添加你自己的中间件只需要将其追加到后面并为其分配一个 key:

/** * The application's route middleware. * * These middleware may be assigned to groups or used individually. * * @var array */protected $routeMiddleware = [    'auth' => \App\Http\Middleware\Authenticate::class,    'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,    'can' => \Illuminate\Foundation\Http\Middleware\Authorize::class,    'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,    'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,    'test' => \App\Http\Middleware\TestMiddleware::class];

我这里分配的是test

3.运用到路由当中去,新建一条路由,如果要用到多个中间件,middleware 可以对应一个数组,代码如下

Route::get('Admin/test3', ['middleware'=>'test',function () {    return 'Admin::test3';}]);

4.访问下域名/Admin/test3,看看效果



其实可以把中间件当做,请求时候,多走的一层,在这一层上面可以做很多验证啊,防护啊什么的事情,走一遍大概有个了解,还有路由组什么的,就不贴出来了,文档比较详细

laravel 中间件文档地址:http://laravelacademy.org/post/2803.html

0 0
原创粉丝点击