我照着文档写的,看了半天不知道哪里出错了,求大佬帮忙给看一下:在AuthServiceProvider.php里的$policies属性里注册了ArticlesPolicy这个类。在Policies文件夹下面也用artisan控制台命令生成了一个ArticlesPolicy类:但是我在控制器里面使用Gate::allows()命令的时候,却出错了:大佬帮忙看看是哪里出错了,我自己看了半天没看出来。
这个是ArticlesPolicy策略类里定义的:
public function update(User $user, Article $article)
{
return $user->id == $article->user_id;
}
这个是控制器里使用Gate类的地方:
public function edit($id)
{
$article = Article::findOrFail($id);
if (Gate::allows('articles.update',$article)) {
return view('articles.edit', compact('article'));
}else{
return 'helloworld';
}
}
在不加权限管理的时候,不管有没有权限,访问类似blog.test/articles/123/edit这样的地址的时候是没问题的。加了权限管理后,不管有没有权限,访问同样的地址就会出现上面的报错。
2 回答
慕田峪9158850
TA贡献1794条经验 获得超7个赞
但是我在控制器里面使用Gate::allows()命令的时候,却出错了:
请贴出这部分的代码
代码上来看未发现问题。
报错的关键信息:Class ArticlesPolicy does not exist
,说明未发现 ArticlesPolicy 这个类
1.更改 AuthServiceProvider 里 boot 这里的代码,改成这种写法
Gate::resource('articles', ArticlesPolicy::class);
根据题主反馈,这是正解。
2.上述步骤还是报错这个的话,并且在未发现代码问题的情况下,建议执行如下操作
php artisan clear-compiled
php artisan optimize
- 2 回答
- 0 关注
- 451 浏览
添加回答
举报
0/150
提交
取消