zoukankan      html  css  js  c++  java
  • laravel5.8笔记四:中间件

    应用场景:检测登陆,控制器加载数据,传递常量

    命令

    //中间件创建命令
    php artisan make:middleware Check
    注意:
    1.需要注册中间件
    2.中间件命名不能重复
     
    middleware/Check.php代码
     
    <?php
    namespace AppHttpMiddleware;
    use Closure;
    class Check
    {
        /**
         * Handle an incoming request.
         *
         * @param  IlluminateHttpRequest  $request
         * @param  Closure  $next
         * @return mixed
         */
        public function handle($request, Closure $next)
        {
            echo 'middleware-check';
            return $next($request);
        }
    }

    注册中间件appHttpKernel.php

    routeMiddleware注册

    protected $routeMiddleware = [
            /*
             * 注册中间件
             * Author:MR.zhou
             * */
            'check' =>MiddlewareCheck::class,
            'goods' =>MiddlewareGoods::class,
    
        ];

    middlewareGroups注册

    protected $middlewareGroups = [
            'web' => [
                AppHttpMiddlewareEncryptCookies::class,
                IlluminateCookieMiddlewareAddQueuedCookiesToResponse::class,
                IlluminateSessionMiddlewareStartSession::class,
                // IlluminateSessionMiddlewareAuthenticateSession::class,
                IlluminateViewMiddlewareShareErrorsFromSession::class,
                AppHttpMiddlewareVerifyCsrfToken::class,
                IlluminateRoutingMiddlewareSubstituteBindings::class,
            ],
    
            'api' => [
                'throttle:60,1',
                'bindings',
            ],
            // 正常
            'dds' =>[
                'goods',
                'check'
            ],
            /*
             * 错误示范
             * 命名重复: check与routeMiddleware下的check命名重复,路由调用的时候会出错。
             * */
            'check' =>[
                'goods',
                'check'
            ]

    路由调用

    // 中间件群组 (b.验证登陆)
        Route::group(['middleware' => ['check']], function () {
           Route::get('/show','IndexController@show');
        });
    // 可以调用goods、check两个中间件 Route::group([
    'middleware' => ['dds']], function () {   Route::get('/show','IndexController@show'); });
    Route::get('admin/profile', function () {
        //
    })->middleware('auth');
    
    Route::get('/', function () {
        //
    })->middleware('first', 'second');

    场景一:加载常量

     MiddlewareConstant.php

    <?php
    
    namespace AppHttpMiddleware;
    
    use Closure;
    
    class Check
    {
        /**
         * Handle an incoming request.
         *
         * @param  IlluminateHttpRequest  $request
         * @param  Closure  $next
         * @return mixed
         */
        public function handle($request, Closure $next)
        {
            define('VERSION','5.8');
            return $next($request);
        }
    }

    Kernel.php注册常量

    protected $routeMiddleware = [
            'auth' => AppHttpMiddlewareAuthenticate::class,
            'auth.basic' => IlluminateAuthMiddlewareAuthenticateWithBasicAuth::class,
            'bindings' => IlluminateRoutingMiddlewareSubstituteBindings::class,
            'cache.headers' => IlluminateHttpMiddlewareSetCacheHeaders::class,
            'can' => IlluminateAuthMiddlewareAuthorize::class,
            'guest' => AppHttpMiddlewareRedirectIfAuthenticated::class,
            'signed' => IlluminateRoutingMiddlewareValidateSignature::class,
            'throttle' => IlluminateRoutingMiddlewareThrottleRequests::class,
            'verified' => IlluminateAuthMiddlewareEnsureEmailIsVerified::class,
            'check'=>MiddlewareCheck::class  // 注册常量
        ];

    路由调用:

    public function index(){
            echo VERSION;
        }

    页面输出:123456

    场景二:检测登陆;方法跟上面基本一样

    需要掌握的技巧:基本路由加载中间件,加载多个中间件,群组中间件

  • 相关阅读:
    Android开发系列(十七)QQ聊天之Android显示Gif ——在TextView中添加动态表情
    玩转Hook——Android权限管理功能探讨(二)
    玩转Hook——Android权限管理功能探讨(一)
    由一个简单算法想到的程序员素养问题
    Android手机间无线互传功能探索及实现
    从字节码的角度看Java内部类与外部类的互相访问
    HttpClient与HttpUrlConnection下载速度比较
    记一道有趣的Twitter面试题
    Android改进版CoverFlow效果控件
    Android应用如何监听自己是否被卸载及卸载反馈功能的实现(第二版)
  • 原文地址:https://www.cnblogs.com/wesky/p/10443820.html
Copyright © 2011-2022 走看看