Laravel spatie/laravel-permission @can 指令

She*_*cia 2 laravel laravel-permission

我目前正在使用 Spatie 角色和权限库。我有多个警卫,分别是管理员和网络。我的管理员有权使用 Guard_name = admin 来“管理身份验证”。当我尝试运行下面的语法时,它返回 true。

current_user()->hasPermissionTo('manage authentication', 'admin')
Run Code Online (Sandbox Code Playgroud)

但是当我使用 @can 指令时,span 标签不会出现。

@can('manage authentication')
<span>Hello</span>
@endcan
Run Code Online (Sandbox Code Playgroud)

我尝试了这个,但跨度标签仍然没有出现。

@can('manage authentication', 'admin')
<span>Hello</span>
@endcan
Run Code Online (Sandbox Code Playgroud)

我做错了吗?

更新:我的用户模型中没有任何角色/权限相关的属性和功能

Ahm*_*kha 5

@can 不能与多个守卫一起使用

你可以使用这个:

@if(auth('guard-name')->check() && auth('guard-name')->user()->can('permission-name'))
Run Code Online (Sandbox Code Playgroud)

之后运行:

php artisan cache:forget spatie.permission.cache
Run Code Online (Sandbox Code Playgroud)

然后 :

php artisan cache:clear
Run Code Online (Sandbox Code Playgroud)