10Controller之middleware

Posted mingliangge

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了10Controller之middleware相关的知识,希望对你有一定的参考价值。

路由中间件:达到某些要求就可以访问这个页面,达不到要求访问那个页面

 

一、编写控制器

public function middle1(){
    return 尚未达到要求;
}
public function middle2(){
    return 已达到要求,访问中;
}

 

 

二、新建中间件,在 app / Http / Middleware 下,新建 Huodong.php

<?php
namespace AppHttpMiddleware; //命名空间
use Closure;

class Huodong{
    public function handle($request,Closure $next){ 
        //写要求
        if(time() < strtotime(2020-6-26)){
            return redirect(middle1);
        }
        return $next($request);
    }
}

 

 

三、注册中间件,app / Http / Kernel.php ,路由中间件在  protected $routeMiddleware 里面添加

huodong => AppHttpMiddlewareHuodong::class,
//中间件名字  ,中间件页面位置 ::class

 

 

四、编写路由

//不需要条件,可做宣传页
Route::get(/middle1,XxxController@middle1);

//条件到达可访问,可做活动页,里面可以设置多个路由
Route::group([middleware => [huodong]],function(){
                         //注册中间件时的名字

    Route::get(/middle2,XxxController@middle2);
});

 

 

辨别 前置 / 后置 中间件,在写中间件页面时判断 $next($request) 的先后顺序

<?php
namespace AppHttpMiddleware; //命名空间
use Closure;

class Huodong{
    public function handle($request,Closure $next){ 

        if(time() < strtotime(2020-6-26)){
            return redirect(middle1);
        }

        return $next($request); //这是前置中间件
        //在这个请求之前操作,前置中间件
        //在这个请求之后操作,后置中间件
    }
}

 

以上是关于10Controller之middleware的主要内容,如果未能解决你的问题,请参考以下文章

自动挡换手动挡:在 ASP.NET Core 3.0 Middleware 中手动执行 Controller Action

Django组件之Middleware

django之设置中间件模板

Cakephp MiddleWare 类中如何导入自定义组件?

django之(中间件)middleware

django之中间件middleware