我一点一点地遵循了自述文件。
但是,当我尝试使用@role
或@can
刀片指令时,它不起作用,它似乎永远是false
我试图自己解决这个问题,但是我已经没想完了。我认为这可能是一个警卫问题,但我正在使用以下内容
'middleware_class' => [
App\Http\Middleware\CheckIfAdmin::class,
\Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class,
Backpack\Base\app\Http\Middleware\UseBackpackAuthGuardInsteadOfDefaultAuthGuard::class,
],
我不使用两种身份验证方法,只使用背包一种。我过去运行过make:auth
命令,但我已经删除了它创建的所有文件。
以下命令dd(backpack_user()->hasRole('test'))
返回false
,这让我觉得这是一个警卫问题。
表model_has_roles看起来如下(id 2是我的用户)db screenshot
欢迎任何帮助
谢谢
这就是我解决它的方法1.在base.middleware_class数组中使用Backpack \ Base \ app \ Http \ Middleware \ UseBackpackAuthGuardInsteadOfDefaultAuthGuard :: class。根据doc https://github.com/Laravel-Backpack/PermissionManager 2.在刀片中使用指令@role('***')。 @can将无法正常工作。
在较旧版本的Demo中不需要这样做。最近看来,配置权限.php有不同的默认值。
对于我的情况清除缓存修复了问题:
php artisan view:clear