首页 > 解决方案 > 如何在 grup 路由中添加额外的中间件?

问题描述

我创建了管理面板,并希望授予对某些角色的访问权限,例如 admin、mod、support、god 等。但在同一组路线中,我只想为 God 和 Admin 授予访问权限。我可以在一个组中执行此操作,还是应该为此路由创建单独的组(单独的组或仅将中间件添加到一个路由),但我更喜欢单独的组。

Route::group(['prefix' => 'admin', 'middleware' => ['roles'], 'roles' => ['administrator', 'moderator', 'support']], function () {
        Route::get('/', 'AdminController@index')->name('admin.index');
        Route::get('users', 'AdminController@users')->name('admin.users');
        Route::get('messages', 'AdminController@messages')->name('admin.messages');    
    });

和单独的组

Route::group(['prefix' => 'admin', 'middleware' => ['roles'], 'roles' => ['administrator']], function () {
        Route::get('finance', 'AdminController@finance')->name('admin.finance');
    });

我怎么能在一组中做。我试过了,但即使我只是支持,我也可以使用所有的财务方法。

标签: laravel-5

解决方案


这只能作为单独的组工作,因为 Laravel 会一次性将所有中间件要求应用于组中的路由。

另一种选择是使用嵌套组(如果合适),但这基本上与单独的组相同:

Route::group(['prefix' => 'admin', 'middleware' => ['roles'], 'roles' => ['administrator', 'moderator', 'support']], function () {
    Route::get('/', 'AdminController@index')->name('admin.index');
    Route::get('users', 'AdminController@users')->name('admin.users');
    Route::get('messages', 'AdminController@messages')->name('admin.messages');

    Route::group(['prefix' => 'admin', 'middleware' => ['roles'], 'roles' => ['administrator']], function () {
        Route::get('finance', 'AdminController@finance')->name('admin.finance');
    });
});

推荐阅读