关于 tcg/voyager 创建 Bread 后浏览权限报错的解决办法
1. 出现的问题
使用 tcg/voyager
扩展包时,需要在后台添加(比如)文章管理,也就是创建 Bread
,创建完成后给予用户 browse/read/add/edit/delete
等权限,但是在浏览文章 Bread
后,在 debug 模式下会报错,提示: This action is unauthorized.
。
2. 出现此问题的原因
出现此问题,遂在 Github 上大致浏览了一下 issue,出现此问题的原因是,因为使用了自定义的 Policies
,导致 Voyager 无法通过授权。
3. 解决办法
解决办法就是创建一个 Trait ,比如 VoyagerPolicyTrait
,然后添加如下代码:
trait VoyagerPolicyTrait
{
public function browse(User $user)
{
return $user->isAdmin();
}
public function edit(User $user)
{
return $user->isAdmin();
}
public function add(User $user)
{
return $user->isAdmin();
}
public function delete(User $user)
{
return $user->isAdmin();
}
public function read(User $user)
{
return $user->isAdmin();
}
}
其中 $user->isAdmin()
是在 User
模型下添加的用来判断是否为管理员的方法,返回值类型为 boolean
。
然后在文章的 Policy
下使用该 Trait :
class PostPolicy
{
use HandlesAuthorization;
use VoyagerPolicyTrait;
...
}
参考:the-control-group/voyager issue
本作品采用《CC 协议》,转载必须注明作者和本文链接
打扰,刚用voyage2天,请问VoyagerPolicyTrait写在哪里,我用php artisan make:policy VoyagerPolicyTrait命令生成的和贴出来的代码不一样