我無法讓我的某個授權策略正常運行,導致授權嘗試始終返回false。爲了測試,我甚至強迫函數返回true。我使用Laravel 5.4,這是我的策略功能:Laravel授權政策未被調用
public function can_modify_or_delete(User $user, Comment $comment)
{
return true;
}
在我AuthServiceProvider.php
文件我已經添加了CommentPolicy
我的現行政策登記。
protected $policies = [
'App\Models\Post' => 'App\Policies\PostPolicy',
'App\Models\Comment' => 'App\Policies\CommentPolicy',
];
奇怪的是,該郵政政策一直工作得很好。註釋似乎不是被註冊或沒有被正確調用。
在我的路線:
Route::delete('/comments/{comment}', '[email protected]');
,並在CommentsController
public function destroy(Request $request, Comment $comment)
{
$this->authorize('can_modify_or_delete', $comment);
$comment->delete();
return response(['status' => 'Comment deleted'], 200);
}
不幸的是不管是什麼,即授權檢查返回false。我錯過了什麼嗎?仔細檢查是否有錯別字,並找不到任何錯誤。我也確認了路由模型綁定正在按預期工作,因此它不是空資源問題。我在策略中嘗試了dd()
,甚至沒有被調用。
您的路線是否歸入中間件? – Neat
控制器使用'auth:api'中間件。我確認在權限運行之前,我通過控制器方法中的'dd()'擁有一個經過認證的用戶。 –
不輸出任何錯誤或只是不工作。此外,改爲真假,看看是否有任何變化 – MohamedSabil83