Laravel で Policy クラスを使用する最良の方法は何かについて、少し混乱しています。
aUser
と aがあるとします。投稿を更新するときに、 a が投稿を所有してPost
いることを確認するポリシー メソッドがあります。User
Post
オブジェクトをauthorize
データベースからロードした直後にメソッドに渡す必要がありますか? または、入力可能な値を更新したら?
私の問題は、でuser_id
変更した場合Post
、authorize メソッドにより、ユーザーが所有していなくても投稿を変更できるようになるか、ユーザーを他の人に変更できるようになり、アクセスできなくなることです。
$this->authorize('update', $post)
これは、値を更新する前後に呼び出す必要があるということですか?
$post = Post::findOrFail($id);
$this->authorize('update', $post); // Should I call it here
$post->fill($request->input());
$this->authorize('update', $post); // Or here? Or, both places?
または、リクエスト検証を使用して、ユーザーがアクセスできないエンティティの ID を入力できないようにする必要がありますか?