gpt4 book ai didi

laravel - 试图了解 Laravel Backpack Spatie 权限

转载 作者:行者123 更新时间:2023-12-04 10:47:27 28 4
gpt4 key购买 nike

我已经安装了背包 4 和 Spatie。
https://github.com/spatie/laravel-permission

我创建了 2 个角色:
我的后端管理面板中的管理员和用户(背包附带的 CRUD)。

然后我添加了 2 个权限:
1 称为“阅读管理链接”
1 称为“读取用户链接”

我已经为每个角色分配了权限:
阅读管理员链接 = 管理员角色
读取用户链接 = 用户角色

我在管理面板中看到正确分配给角色的权限。

现在在左侧导航栏上,我想在以管理员身份登录时看到 1 个菜单,或者在以用户身份登录时看到另一个菜单。

但我无法让它工作:

<li> 
<ul>
@if(auth()->backpack_user()->can('read admin link'))
<li class="nav-item"><a class="nav-link" href=""><i class="nav-icon fa fa-user"></i> <span>Can only
be seen by admins</span></a></li>
@endif
@if(auth()->backpack_user()->can('read user link'))
<li class="nav-item"><a class="nav-link" href=""><i class="nav-icon fa fa-user"></i> <span>Can only
be seen by users</span></a></li>
@endif
</ul>
</li>

似乎这个权限检查器(登录时):
@if(auth()->backpack_user()->can('xxxxxxxxxxx'))
@endif

导致这个错误:
Facade\Ignition\Exceptions\ViewException
Method Illuminate\Auth\SessionGuard::backpack_user does not exist. (View:
C:\laragon\www\demo\resources\views\vendor\backpack\base\inc\sidebar_content.blade.php)

这是我的 base.php 设置:
'middleware_class' => [
App\Http\Middleware\CheckIfAdmin::class,
\Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class,
// \Backpack\CRUD\app\Http\Middleware\UseBackpackAuthGuardInsteadOfDefaultAuthGuard::class,
],

知道为什么会这样吗?

谢谢

最佳答案

好的,这里是修复:

您需要添加最后一行(类)

        'middleware_class' => [
App\Http\Middleware\CheckIfAdmin::class,
\Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class,
\Backpack\CRUD\app\Http\Middleware\UseBackpackAuthGuardInsteadOfDefaultAuthGuard::class,
],

然后您必须删除数据库中的当前角色,否则他们将保留旧的“网络”防护设置。删除它们并使用这个新的背包保护器重新创建它们,一切都会正常进行。

关于laravel - 试图了解 Laravel Backpack Spatie 权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59636238/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com