0

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 を入力できないようにする必要がありますか?

4

1 に答える 1

1

値を更新する前に $this->authorize('update', $post) を呼び出す必要があります

$post = Post::findOrFail($id); 

$this->authorize('update', $post); // throw a HttpException if the action is not authorized

$post->fill($request->input());

ソース: https://laravel.com/docs/5.2/authorization#controller-authorization

于 2016-05-31T15:21:21.057 に答える