laravel-5 - 如何在 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 会一次性将所有中间件要求应用于组中的路由。
另一种选择是使用嵌套组(如果合适),但这基本上与单独的组相同:
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');
});
});
推荐阅读
- ios - 如何防止在 iOS 应用程序中备份用户数据?
- android - 重新启动时自动重新启动应用程序无法在 Rooted Android 6 设备上运行
- javascript - 为什么 isNaN('') 或 isNaN("") 为假(单引号或双引号被视为有效数字)?
- lua - 在 Lua 表中查找重复值
- html - Woocommerce Floating Bar 有额外的 Margin-Top
- c# - 在asp.net核心中发送带有防伪令牌的post ajax请求不要访问控制器方法
- fortran - 通过 type(c_ptr) 虚拟变量传递外部函数和自定义数据类型
- command - Spyder 新手,不确定为什么 < 在我的脚本中无法触发“小于”
- amazon-cloudformation - 在 2 个区域部署 2 个依赖的 cloudformation 堆栈部分
- python - 如何返回字典中具有最大值的键