我已经逐点遵循了自述文件。
- 我可以创建用户/角色/权限并分配它们。
- 它们也会在数据库中正确创建。
但是,当我尝试使用 @role
或 @can
刀片指令时,它不起作用,它似乎总是false
我试图自己弄清楚,但我没有想法了。 我以为这可能是一个警卫问题,但我正在使用以下内容
'middleware_class' => [
AppHttpMiddlewareCheckIfAdmin::class,
IlluminateFoundationHttpMiddlewareConvertEmptyStringsToNull::class,
BackpackBaseappHttpMiddlewareUseBackpackAuthGuardInsteadOfDefaultAuthGuard::class,
],
我不使用两种身份验证方法,只使用背包方法。我过去确实运行过make:auth
命令,但此后我删除了它创建的所有文件。
以下命令dd(backpack_user()->hasRole('test'))
返回false
这真的让我认为这是一个警卫问题。
表model_has_roles如下所示(ID 2 是我的用户)数据库截图
欢迎任何帮助
谢谢
对于我的情况,清除缓存解决了这个问题:
php artisan view:clear
这就是我解决它的方式 1. 在数组base.middleware_class中,使用 Backpack\Base\app\Http\Middleware\UseBackpackAuthGuard而不是DefaultAuthGuard::class。根据文档 https://github.com/Laravel-Backpack/PermissionManager 2. 在刀片中使用指令 @role('***')。@can行不通。
这在旧版本的演示中是不需要的。似乎在最新的配置权限.php具有不同的默认值。