認証ポリシーのいずれかが正常に実行されないため、認証の試行が常にfalseになることがあります。私はテストのために関数をtrueに戻すように強制しています。私は私の既存のポリシーの登録にCommentPolicy
を追加しました私のAuthServiceProvider.php
ファイル内Laravel認証ポリシーが呼び出されない
public function can_modify_or_delete(User $user, Comment $comment)
{
return true;
}
:私はLaravel 5.4を使用しています、ここに私のポリシー機能です。
protected $policies = [
'App\Models\Post' => 'App\Policies\PostPolicy',
'App\Models\Comment' => 'App\Policies\CommentPolicy',
];
奇妙なことに、そのポストポリシーはうまくいきました。コメントは登録されていないか、正しく呼び出されていないようです。私のルートで
:
Route::delete('/comments/{comment}', '[email protected]');
とその認可チェックがfalseを返すされているもの、CommentsController
public function destroy(Request $request, Comment $comment)
{
$this->authorize('can_modify_or_delete', $comment);
$comment->delete();
return response(['status' => 'Comment deleted'], 200);
}
で残念ながらどんなに。何か不足していますか?タイプミスがきれいにチェックされ、見つからなかった。また、ルートモデルのバインディングが意図したとおりに動作していることを確認したため、ヌルリソースの問題ではありません。私はポリシーでdd()
を試しましたが、それは呼び出されていません。
ルートはミドルウェアの下でグループ化されていますか? – Neat
コントローラは 'auth:api'ミドルウェアを使用します。私は認証されたユーザが、権限が実行される直前にコントローラメソッドで 'dd()'することでそれを確認しました。 –
はエラーを出力していないか、動作していません。また、真に偽に変更し、変更が発生したかどうかを確認してください。 – MohamedSabil83