Laravel5.1 Middleware中间件(初级)

中间件?什么鬼? 大家第一次接触这个词都会有这么个疑问,但它其实没那么神秘。

一句话就可以解释它:过滤HTTP请求专用机制。

为什么要使用中间件?

过滤HTTP请求是可以写在别的地方,比如说控制器中 路由中,BUT 抽象出来就有它的理由,比如说Laravel自带的Auth中间件 它要求必须是登录进来的用户才有权访问 如果没有登录就跳转到登录页面,这样的逻辑在很多场景都会用到 这很明显了吧 你不可能在每个控制器或每一个路由都单独实现以便,直接抽出来多方便。


1 使用中间件

1.1 创建中间件

咱创建中间件是使用artisan控制台的:

php artisan make:middleware TestMiddleware

创建好后位于:app/Http/Middleware

1.2 解读中间件

首先我们来看看新创建的中间件是什么模样儿:

class TestMiddleware
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next)
    {
        return $next($request);
    }
}

解读:middleware中只有 “handle”函数 这个函数呢接受两个参数

它的流程是接受request参数 取出一些东西做验证 如果逻辑通过 执行next闭包。

如果你还是不太懂的话 没关系 咱上实例

1.3 编写中间件

    public function handle($request, Closure $next)
    {
        // 如果传入的id参数等于0 就跳转到首页。
        if ($request->input(‘id‘) == 0){
            return redirect(‘/‘);
        }
        // id参数不等于0 则为通过 进行默认的下一步操作。
        return $next($request);
    }

完事儿后我们需要在 app/Http/Kernel.php 中进行注册:

    /**
     * The application‘s global HTTP middleware stack.
     *
     * @var array
     */
    protected $middleware = [
        \Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class,
        \App\Http\Middleware\EncryptCookies::class,
        \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
        \Illuminate\Session\Middleware\StartSession::class,
        \Illuminate\View\Middleware\ShareErrorsFromSession::class,
        \App\Http\Middleware\VerifyCsrfToken::class,
    ];

    /**
     * The application‘s route middleware.
     *
     * @var array
     */
    protected $routeMiddleware = [
        ‘auth‘ => \App\Http\Middleware\Authenticate::class,
        ‘auth.basic‘ => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
        ‘guest‘ => \App\Http\Middleware\RedirectIfAuthenticated::class,
        // 把我们创建的middleware注册到这里
        ‘test‘ => \App\Http\Middleware\TestMiddleware::class,
    ];

注意:我们可以瞧见啊 Kernel 中有两个数组 如果你希望在全局中使用 就注册在middleware数组中,如果你想要局部使用middleware 那么就在routeMiddleware数组中注册。

1.4 使用中间件

好了,注册完之后我们来用用吧:

Route::get(‘/test-middleware‘,[‘middleware‘=>‘test‘,function(){
    return ‘HI‘;
}]);

当我们输入:http://localhost:8000/test-middleware?id=1 时会在页面上输出HI 当输入 http://localhost:8000/test-middleware?id=0 时会返回首页。

时间: 2024-10-03 13:20:22

Laravel5.1 Middleware中间件(初级)的相关文章

创建自定义的Middleware中间件

创建自定义的Middleware中间件 阅读目录 何为Middleware中间件 使用Inline方式注册Middleware 使用Inline+ AppFunc方式注册Middleware 定义原生Middleware类的形式来注册Middleware 使用Katana Helper来注册Middleware Middleware的执行顺序 小结 经过前2篇文章的介绍,相信大家已经对OWIN和Katana有了基本的了解,那么这篇文章我将继续OWIN和Katana之旅——创建自定义的Middle

ASP.NET Core 运行原理剖析2:Startup 和 Middleware(中间件)

小分享:我有几张阿里云优惠券,用券购买或者升级阿里云相应产品最多可以优惠五折!领券地址:https://promotion.aliyun.com/ntms/act/ambassador/sharetouser.html?userCode=ohmepe03 ASP.NET Core 运行原理剖析2:Startup 和 Middleware(中间件) Startup Class 1.Startup Constructor(构造函数) 2.ConfigureServices 3.Configure方法

Startup 和 Middleware(中间件)

Startup 和 Middleware(中间件) ASP.NET Core 运行原理剖析2:Startup 和 Middleware(中间件) Startup Class 1.Startup Constructor(构造函数) 2.ConfigureServices 3.Configure方法 Middleware 1.中间件注册 2.常用中间件 在上一节(文章链接)中提到ASP.NET Core WebApp 必须含有Startup类,在本节中将重点讲解Startup类以及Middlewar

Laravel 5.0 - Middleware (中间件)

图片:http://stackphp.com/ 如上图所示,中心的绿色区域是整个应用的核心区域. 所以,中间件就是一系列处理请求和响应的方式而不是你用程序逻辑的一部分. Laravel 中默认使用中间件处理请求中的加密解密,以及 Cookies 和 Sessions.你也可以自定义自己所需的中间件. 写中间件 artisan make:middleware MyMiddleware 执行上面的命令,生成中间件文件: <?php namespace App\Http\Middleware; use

Django分析之Middleware中间件

写了几周的脚本,今天终于开始接触web框架了~学习Python的web框架,那么Django就几乎是必修课了,这次的工作是先打打下手,主要的任务是在setting中添加版本号,在渲染静态css,js的路径时附带版本号,例如“example.v1124.css”,然后再在request请求中祛除掉版本号.为什么要这么做呢?因为这样做的话在前端输出静态文件的路径就会加上就会加上版本号,这样当开发出新的静态文件的时候,客户端就会强制刷新本地的缓存,为了达到这个目的就要首先要在settings文件中配置

middleware中间件

django 中的中间件(middleware),在django中,中间件其实就是一个类,在请求到来和结束后,django会根据自己的规则在合适的时机执行中间件中相应的方法. 在django项目的settings模块中,有一个 MIDDLEWARE_CLASSES 变量,其中每一个元素就是一个中间件,如下图. 与mange.py在同一目录下的文件夹 wupeiqi/middleware下的auth.py文件中的Authentication类 中间件中可以定义四个方法,分别是: process_r

Laravel Middleware 中间件笔记

Laravel的中间件可以方便的过滤进入我们网页的请求.包括用户授权,CORS来指定流出请求的header等. 定义一个新的中间件可以使用命令: php artisan make:middleware AgeMiddleware 这条命令在app/Http/Middleware中创建AgeMiddleware类. 我们假设我们过滤所有年龄小于200的请求: <?php namespace App\Http\Middleware; use Closure; class AgeMiddleware

laravel5学习之中间件访问控制

如果控制文章的添加只有登录的用户才可以操纵,可以加判断如下 public function create(){ //这个虽然可以达到控制登陆用户访问的目的 但是需要写很多 if(Auth::guest()){ return redirect('auth/login'); } return view('articles.create'); } 文件Http-->Middleware-->Authenticate.php就是对应的权限控制文件,在Http-->Kernel.php中有如下代码

Jerry的CRM Middleware(中间件)文章合集

我在SAP成都研究院做过的CRM中间件的项目其实并不是很多: 1. 2013年下半年和2014年上半年曾经支持过中联重科和蒙牛的CRM项目相关的中间件问题; 2. 2014年上半年做过一个CRM物料主数据的中间件开发项目; 3. 2014年负责CRM物料主数据的维护工作. 这个列表里所有的文章都是我在实际开发或者项目过程中遇到问题后记录下来的心得.2013年直到清明节前,我其实对CRM中间件是一点都不了解的,但是我的老板Poseidon让我把这一块的知识空缺补上,因为将来成都团队需要负责中间件这