laravel 中间件

<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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值