亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Laravel 策略:有錯誤嗎?緩存?怎么解決?

Laravel 策略:有錯誤嗎?緩存?怎么解決?

PHP
qq_遁去的一_1 2023-04-02 10:57:32
我在這里看到了同樣的問題:Laravel policies : code change is ignored。是否有任何策略緩存要清除?在這里:Laravel Policy bug我正在編寫一個新策略,最簡單的一個,通過模式User檢查登錄的用戶是否與數據庫中的用戶相同,以便他可以編輯他的個人資料,所以......我創建策略文件:> php artisan make:policy UserPolicy我在以下位置注冊了政策AuthServiceProvider.php:...protected $policies = [    // 'App\Model' => 'App\Policies\ModelPolicy',    User::class => UserPolicy::class,];...在UserPolicy.php我創建edit函數中: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'));}看到什么地方不對了嗎?我也不是,因為它奏效了……第一次。然后我想更改策略,User模型有一個level屬性,普通用戶為 1,管理員為 5,超級用戶為 99 等等。所以我希望管理員或超級用戶能夠更改用戶數據,所以我將 的函數重寫UserPolicy.php為edit:public function edit(User $authUser, User $user) {    return ($authUser->id === $user->id) || ($user->level > 1);}當然我在這里犯了一個錯誤,我應該檢查$authUserand nor $user。當我在瀏覽器中簽入時,函數返回 false,服務器給了我一個403This action is unauthorized.,沒關系?,F在是奇怪的事情。我糾正了功能: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...我從文件中刪除函數...它返回 403...我從 AuthServiceProvider 中刪除注冊... Ir 返回 403...不,我沒有使用 Gates 或其他東西,Laravel 應用程序幾乎是處女。我過去遇到過這個問題,突然出現,并且以相同的方式出現。我不知道在哪里尋找,尋找什么......我認為那將是一些我沒有掌握的互動,所以我想從這個項目開始時的政策開始。
查看完整描述

1 回答

?
達令說

TA貢獻1821條經驗 獲得超6個贊

我發誓這曾經像我在上面發布的那樣工作(至少它曾經在 5 中工作)。我不得不改變

$this->authorize($user);

為了

$this->authorize('edit',?$user);



查看完整回答
反對 回復 2023-04-02
  • 1 回答
  • 0 關注
  • 106 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號