4.1、定义中间件
在中间件的目录下新建一个php类,用于对活动页面的请求进行拦截,当日期没有到达指定日期之前将对活动的请求重定向到noActivity路由:
namespace App\Http\Middleware; use Closure; class Activity { public function handle($request,Closure $next){ //如果时间小于指定时间则跳转到noActivity路由 if (time()<strtotime('2018-5-12')){ return redirect('noActivity'); }else { //时间符合则执行下一步并把请求request传递给下一步 return $next($request); } } }
后置中间件则是先执行请求操作并返回给$response,在执行完后置操作后再返回
public function handle($request, Closure $next) { $response = $next($request); //先执行请求 // 执行后置中间件操作 return $response; }
注意不可以直接return内容,而是需要通过response()函数返回你的内容
return response(array('status'=>2,'msg'=>"请先登录!"))
4.2、注册路由
中间件的注册在app/Http/kernel.php文件中的Kernel类,其中有三个属性:
- $middleware属性用于定义全局中间件,每个http请求都需要通过全局中间件。
- $middlewareGroups属性用于定义中间件组,比如你需要给某个路由指定多个中间件,分别指定太过麻烦,你可以把它们放在一个中间件组中。例如中间件组api包括两个中间件throttle:60,1与bindings
'api' => [ 'throttle:60,1', 'bindings', ],
- $routeMiddleware属性用于注册分配中间件给指定的路由。
注册中间件需要为中间件指定一个key值,用于分配中间件给指定路由时使用,并对应中间件的路径
protected $routeMiddleware = [ 'auth' => \Illuminate\Auth\Middleware\Authenticate::class, 'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class, 'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class, 'can' => \Illuminate\Auth\Middleware\Authorize::class, 'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class, 'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class, 'activity'=>\App\Http\Middleware\Activity::class //注册activity中间件 ];
4.3、使用中间件
在定义路由时通过middleware()方法将中间件指定到某个路由:
Route::get('activity','Login@activity')->middleware('activity');
内容版权声明:除非注明,否则皆为本站原创文章。