【问题标题】:Laravel Apply middlware on specific route of resource route controllerLaravel 在资源路由控制器的特定路由上应用中间件
【发布时间】:2021-03-05 21:10:45
【问题描述】:

我想在资源控制器的创建路由上应用中间件,但对如何设置中间件感到困惑。通常我们可以像这样添加中间件

Route::get('api/users/{user}', function (App\Models\User $user) {
    return $user->email;
})->middleware('name');

但是当我们有一个资源控制器时,我怎么能在资源控制器的单个路由上应用中间件。

Route::resource('front-pages','Admin\FrontPagesController');

【问题讨论】:

    标签: laravel laravel-5 laravel-routing laravel-middleware laravel-resource


    【解决方案1】:

    创建一个__construct() 函数

    在 FrontPagesController.php 中

    public function __construct()
    {
        $this->middleware('auth', ['except' => ['index','show']]);
    }
    

    参考链接https://laravel.com/docs/8.x/controllers#controller-middleware


    所有可能的功能

    /**
     * Instantiate a new controller instance.
     *
     * @return void
     */
    public function __construct()
    {
        $this->middleware('auth');
    
        $this->middleware('log')->only('index');
    
        $this->middleware('subscribed')->except('store');
    }
    

    【讨论】:

    • 我也可以只通过而不是除了??
    • 是的,你可以做任何事
    【解决方案2】:

    你可以使用

     Route::resource('front-pages','Admin\FrontPagesController')->only('fornt-page.whatever name');
    

    您可以将其与中间件分组

    【讨论】:

      【解决方案3】:
      Route::middleware('name')->resource('front-pages' , 'Admin\FrontPagesController');
      

      参考 laravel 文档:https://laravel.com/docs/8.x/middleware#introduction

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-06-04
        • 2014-10-08
        • 2013-08-20
        • 2014-07-08
        • 2018-01-16
        • 2020-09-04
        • 2013-12-14
        • 2014-02-18
        相关资源
        最近更新 更多