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中文網其他相關文章!