我照著文檔寫的,看了半天不知道哪里出錯了,求大佬幫忙給看一下:在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條經驗 獲得超8個贊
但是我在控制器里面使用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 關注
- 467 瀏覽
添加回答
舉報
0/150
提交
取消