我在這里看到了同樣的問(wèn)題:Laravel policies : code change is ignored。是否有任何策略緩存要清除?在這里:Laravel Policy bug我正在編寫一個(gè)新策略,最簡(jiǎn)單的一個(gè),通過(guò)模式User檢查登錄的用戶是否與數(shù)據(jù)庫(kù)中的用戶相同,以便他可以編輯他的個(gè)人資料,所以......我創(chuàng)建策略文件:> php artisan make:policy UserPolicy我在以下位置注冊(cè)了政策AuthServiceProvider.php:...protected $policies = [ // 'App\Model' => 'App\Policies\ModelPolicy', User::class => UserPolicy::class,];...在UserPolicy.php我創(chuàng)建edit函數(shù)中:public function edit(User $authUser, User $user) { return $authUser->id === $user->id;}在UserController.php我有edit:public function edit($id){ // $user = User::findOrFail($id); $this->authorize($user); return view('user.edit', compact('user'));}看到什么地方不對(duì)了嗎?我也不是,因?yàn)樗嘈Я恕谝淮?。然后我想更改策略,User模型有一個(gè)level屬性,普通用戶為 1,管理員為 5,超級(jí)用戶為 99 等等。所以我希望管理員或超級(jí)用戶能夠更改用戶數(shù)據(jù),所以我將 的函數(shù)重寫UserPolicy.php為edit:public function edit(User $authUser, User $user) { return ($authUser->id === $user->id) || ($user->level > 1);}當(dāng)然我在這里犯了一個(gè)錯(cuò)誤,我應(yīng)該檢查$authUserand nor $user。當(dāng)我在瀏覽器中簽入時(shí),函數(shù)返回 false,服務(wù)器給了我一個(gè)403This action is unauthorized.,沒(méi)關(guān)系?,F(xiàn)在是奇怪的事情。我糾正了功能:public function edit(User $authUser, User $user) { return ($authUser->id === $user->id) || ($authUser->level > 1);}它返回 403...public function edit(User $authUser, User $user) { return true;}它返回 403...我從文件中刪除函數(shù)...它返回 403...我從 AuthServiceProvider 中刪除注冊(cè)... Ir 返回 403...不,我沒(méi)有使用 Gates 或其他東西,Laravel 應(yīng)用程序幾乎是處女。我過(guò)去遇到過(guò)這個(gè)問(wèn)題,突然出現(xiàn),并且以相同的方式出現(xiàn)。我不知道在哪里尋找,尋找什么......我認(rèn)為那將是一些我沒(méi)有掌握的互動(dòng),所以我想從這個(gè)項(xiàng)目開始時(shí)的政策開始。
1 回答

達(dá)令說(shuō)
TA貢獻(xiàn)1821條經(jīng)驗(yàn) 獲得超6個(gè)贊
我發(fā)誓這曾經(jīng)像我在上面發(fā)布的那樣工作(至少它曾經(jīng)在 5 中工作)。我不得不改變
$this->authorize($user);
為了
$this->authorize('edit',?$user);
- 1 回答
- 0 關(guān)注
- 105 瀏覽
添加回答
舉報(bào)
0/150
提交
取消