Laravel5.1 框架Middleware中间件基本用法实例分析

吾爱主题 阅读:176 2021-09-26 13:36:00 评论:0

本文实例讲述了Laravel5.1 框架Middleware中间件基本用法。分享给大家供大家参考,具体如下:

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

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

为什么要使用中间件?

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

1 使用中间件

1.1 创建中间件

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

?
1 php artisan make:middleware TestMiddleware

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

1.2 解读中间件

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

?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 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 编写中间件

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

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

?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 /**   * 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 使用中间件

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

?
1 2 3 Route::get( '/test-middleware' ,[ 'middleware' => 'test' , function (){    return 'HI' ; }]);

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

希望本文所述对大家基于Laravel框架的PHP程序设计有所帮助。

原文链接:https://www.cnblogs.com/sun-kang/p/7398477.html

可以去百度分享获取分享代码输入这里。
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

【腾讯云】云服务器产品特惠热卖中
搜索
标签列表
    关注我们

    了解等多精彩内容