• Laravel 中间件的使用(前置与后置)


    中间件的作用:

    过滤进入应用程序的http请求。

    比如,有一个活动,在活动开始前进入活动页则跳转到宣传页

    使用步骤:

    1 创建中间件 appHttpMiddlewareActivity.php

    php artisan make:middleware Activity
    <?php
    
    namespace AppHttpMiddleware;
    
    use Closure;
    
    class Activity
    {
        /**
         * Handle an incoming request.
         * @param  IlluminateHttpRequest  $request
         * @param  Closure  $next
         * @return mixed
         */
    
        public function handle($request,Closure $next){
    
            if(time() < strtotime('2020-08-06')){
                return redirect('activity0');
            }
            return $next($request);
        }
    }

    2 控制器方法 appHttpControllersStudentController.php

        public function activity0()
        {
            return '活动快要开始了';
        }
    
        public function activity1()
        {
            return '活动进行中,感谢你的参与1';
        }
        public function activity2()
        {
            return '活动进行中,感谢你的参与2';
        }

    3 设置路由 outesweb.php

    //宣传页面
    Route::any('activity0',['uses'=>'StudentController@activity0']);
    
    //活动页面:
    Route::group(['middleware'=>['activity']],function (){
        Route::any('activity1',['uses'=>'StudentController@activity1']);
        Route::any('activity2',['uses'=>'StudentController@activity2']);
    });

    4 注册路由 appHttpKernel.php

        protected $routeMiddleware = [
           。。。。。
            'activity' => AppHttpMiddlewareActivity::class,
        ];

     前置操作与后置操作

        public function handle($request,Closure $next)
        {
            echo '【我是前置操作】';
            $response = $next($request);//$next($request)本质上就是response
            echo($response);
            echo '【我是后置操作】';
        }

    $next($request)就是response  在此之间的就是前置操作,后面的就是后置操作。。。。。

  • 相关阅读:
    C#封装(访问修饰符)和方法
    源文件声明规则和import、package
    throw和throws 的区别
    曲率计算
    react组件三大核心属性之一refs;react中的事件处理
    react脚手架,样式模块化
    es6 class类中可以直接写赋值语句
    es6 class类内部的方法自动开启了严格模式
    react脚手架
    react三大核心之一props
  • 原文地址:https://www.cnblogs.com/polax/p/13323707.html
Copyright © 2020-2023  润新知