我正在尝试使用Laravel Backpack权限管理器(https://github.com/Laravel-Backpack/PermissionManager)实现Laravel Backpack权限UI和路由。
我们已经使用以下命令添加了角色和权限路由
<li class="nav-item"><a class="nav-link" href="{{ backpack_url('role') }}"><i class="nav-icon fa fa-group"></i> <span>Roles</span></a></li>
<li class="nav-item"><a class="nav-link" href="{{ backpack_url('permission') }}"><i class="nav-icon fa fa-key"></i> <span>Permissions</span></a></li>
然而,每当我们导航到这些路由之一时,它都会抛出一个404错误。
根据文档,我们在config/backpack/base.php文件中有以下设置。
// The classes for the middleware to check if the visitor is an admin
// Can be a single class or an array of clases
'middleware_class' => [
App\Http\Middleware\CheckIfAdmin::class,
\Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class,
// \Backpack\CRUD\app\Http\Middleware\UseBackpackAuthGuardInsteadOfDefaultAuthGuard::class,
],
// The guard that protects the Backpack admin panel.
// If null, the config.auth.defaults.guard value will be used.
'guard' => null,
在我们的config/auth.php设置中,我们只设置了一个防护,我们已经创建的所有角色和权限都被设置为使用'web‘防护。
'defaults' => [
'guard' => 'web',
'passwords' => 'users',
],
'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'users',
],
],
这是我的config/backpack/permissionmanager.php文件。**请注意,我们有意设置了user类,以便我们可以使用自己的模型,而不是CRUD的背包模式。
<?php
return [
/*
|--------------------------------------------------------------------------
| Models
|--------------------------------------------------------------------------
|
| Models used in the User, Role and Permission CRUDs.
|
*/
'models' => [
'user' => App\Models\User::class,
'permission' => Backpack\PermissionManager\app\Models\Permission::class,
'role' => Backpack\PermissionManager\app\Models\Role::class,
],
/*
|--------------------------------------------------------------------------
| Disallow the user interface for creating/updating permissions or roles.
|--------------------------------------------------------------------------
| Roles and permissions are used in code by their name
| - ex: $user->hasPermissionTo('edit articles');
|
| So after the developer has entered all permissions and roles, the administrator should either:
| - not have access to the panels
| or
| - creating and updating should be disabled
*/
'allow_permission_create' => true,
'allow_permission_update' => true,
'allow_permission_delete' => true,
'allow_role_create' => true,
'allow_role_update' => true,
'allow_role_delete' => true,
/*
|--------------------------------------------------------------------------
| Multiple-guards functionality
|--------------------------------------------------------------------------
|
*/
'multiple_guards' => false,
'roles_with_admin_access' => ['admin', 'moderator', 'customer service'],
];
这是我们的作曲家文件。
{
"name": "laravel/laravel",
"description": "The Laravel Framework.",
"keywords": [
"framework",
"laravel"
],
"license": "MIT",
"type": "project",
"require": {
"php": "^7.2",
"algolia/algoliasearch-client-php": "^2.2",
"aws/aws-sdk-php": "^3.129",
"backpack/crud": "^4.0.0",
"backpack/permissionmanager": "^5.0",
"barryvdh/laravel-elfinder": "^0.4.3",
"doctrine/dbal": "^2.9",
"fideloper/proxy": "^4.0",
"guzzlehttp/guzzle": "~6.3.3",
"laravel/framework": "^6.18",
"laravel/passport": "^7.5",
"laravel/scout": "^7.2",
"laravel/tinker": "^2.0",
"league/flysystem-aws-s3-v3": "~1.0",
"maatwebsite/excel": "^3.1.16",
"sendgrid/sendgrid": "^7.4",
"spatie/laravel-permission": "^3.0",
"vimeo/laravel": "^5.4",
"webpatser/laravel-uuid": "^3.0"
},
"require-dev": {
"backpack/generators": "^2.0",
"barryvdh/laravel-debugbar": "^3.2",
"fzaninotto/faker": "^1.4",
"laracasts/generators": "dev-master",
"mockery/mockery": "^1.0",
"nunomaduro/collision": "^3.0",
"phpunit/phpunit": "^8.0",
"facade/ignition": "^1.4"
},
"autoload": {
"classmap": [
"database/seeds",
"database/factories"
],
"psr-4": {
"App\\": "app/"
}
},
"autoload-dev": {
"psr-4": {
"Tests\\": "tests/"
}
},
"extra": {
"laravel": {
"dont-discover": []
}
},
"scripts": {
"post-root-package-install": [
"@php -r \"file_exists('.env') || copy('.env.example', '.env');\""
],
"post-create-project-cmd": [
"@php artisan key:generate"
],
"post-autoload-dump": [
"Illuminate\\Foundation\\ComposerScripts::postAutoloadDump",
"@php artisan package:discover"
]
},
"config": {
"preferred-install": "dist",
"sort-packages": true,
"optimize-autoloader": true
},
"minimum-stability": "dev",
"prefer-stable": true
}
我已经运行了所有的供应商发布命令。在没有得到404的情况下,仍然无法导航到/admin/role或/admin/permission路由。
发布于 2020-06-25 05:33:41
您应该有一个包含以下内容的文件:
routes/backpack/permissionmanager.php
<?php
/*
|--------------------------------------------------------------------------
| Backpack\PermissionManager Routes
|--------------------------------------------------------------------------
|
| This file is where you may define all of the routes that are
| handled by the Backpack\PermissionManager package.
|
*/
Route::group([
'namespace' => 'Backpack\PermissionManager\app\Http\Controllers',
'prefix' => config('backpack.base.route_prefix', 'admin'),
'middleware' => ['web', backpack_middleware()],
], function () {
Route::crud('permission', 'PermissionCrudController');
Route::crud('role', 'RoleCrudController');
// Route::crud('user', 'UserCrudController'); // removed and placed within the backpack/custom routes files
});
它在那里吗?
https://stackoverflow.com/questions/61371729
复制相似问题