如何在grup路由中添加额外的中间件?

时间:2019-01-26 01:37:19

标签: laravel-5

我创建了管理面板,并希望授予某些角色,如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');
    });

我该怎么做?我尝试过,但是即使我仅支持,我也可以使用所有财务方法。

1 个答案:

答案 0 :(得分:1)

这将仅作为单独的组工作,因为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');
    });
});