Laravel 现在通过在 can()
方法中直接添加枚举支持来简化路由中的权限检查。此增强功能消除了显式访问枚举的 value
属性的需要,从而使路由定义更简洁、更具表现力。
此功能在构建管理面板或多租户应用程序时尤其出色,在这些应用程序中,权限管理至关重要,并且您希望利用 PHP 的类型安全功能。
Route::get('/admin', function () { // ... })->can(Permission::ACCESS_ADMIN);
以下是如何在管理面板中实现基于角色的路由:
// app/Enums/AdminAccess.php <?php namespace App\Enums; enum AdminAccess: string { case VIEW_REPORTS = 'view_reports'; case MANAGE_STAFF = 'manage_staff'; case EDIT_CONFIG = 'edit_config'; } // web.php Route::prefix('admin')->group(function () { Route::get('/reports', ReportController::class) ->can(AdminAccess::VIEW_REPORTS); Route::get('/staff', StaffController::class) ->can(AdminAccess::MANAGE_STAFF); Route::post('/config', ConfigController::class) ->can(AdminAccess::EDIT_CONFIG); });
路由定义变得更直观且易于维护:
// 旧方法 ->can(AdminAccess::MANAGE_STAFF->value) // 新方法,更简洁 ->can(AdminAccess::MANAGE_STAFF)
增强的 can()
方法使您的基于权限的路由更优雅,同时保留了 PHP 类型系统的优势。
以上是Laravel的枚举驱动路线权限的详细内容。更多信息请关注PHP中文网其他相关文章!