laravel框架Controller之Middleware

本文探讨了Laravel框架中中间件的重要作用,它为HTTP请求过滤提供了便利。通过实例,解释了如何在特定场景下使用中间件,如限制未开始的活动页面访问。介绍了创建名为Activity的中间件步骤,包括在Kernel.php中注册和在路由文件中应用中间件。同时阐述了控制器与中间件的协同工作,确保在访问activity1和activity2页面时执行正确的逻辑。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

中间件有什么用

Laravel中间件提供一个方便的机制来过滤进入应用程序的HTTP请求

场景

有一个活动,在指定日期后开始,如果活动没开始只能访问宣传页面
在App\Http\Middleware新建中间件:
命名为Activity.php

<?php

namespace App\Http\Middleware;

use Closure;		//这是一个全局的类

class Activity
{
    // 前置操作
    public function handle($request, Closure $next)			//Closure是PHP全局的一个类(闭包函数)
    {
        if(time() < strtotime('2019-04-11')) {
            return redirect('activity0');
        }
        return $next($request);
    } 
}

在namespace App\Http、Kernel.php中添加中间件:

protected $routeMiddleware = [
        'auth' => \App\Http\Middleware\Authenticate::class,
        'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
        'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class,
        'cache.headers' => \Illuminate\Http\Middleware\SetCacheHeaders::class,
        'can' => \Illuminate\Auth\Middleware\Authorize::class,
        'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
        'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class,
        'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
        'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class,
        'activity' => \App\Http\Middleware\Activity::class,			//这是新添加的
    ];

在路由文件中添加路由组中间件

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

后置操作

public function handle1($request, Closure $next){
    $response  = $next($request);   //这是操作
    echo $response;
    echo '我是后置操作';
     return $response;
}

控制器

class StudentController extends Controller
{
    //活动宣传页面
    public function activity0()
    {
        //echo date('Y-m-d H:i:s', time()+3600*8);
        return '活动快要开始了,尽情期待';
    }
    //活动宣传页面
    public function activity1()
    {
        return '活动进行中,谢谢您的参与1';
    }
    //活动宣传页面
    public function activity2()
    {
        return '活动进行中,谢谢您的参与2';
    }
}

访问浏览器activity1,activity2页面时,会触发中间件中的判断;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值