0

そのため、承認を行うためのポリシーを作成する方法を学ぶ手助けが必要です。私は Gates のことをよく理解しており、私にとってはうまく機能しますが、ポリシーを作成すると機能しません。

これが私が使用しているコードです。私が抱えている問題は、特定のモデル関数の承認のチェックをどこに置くかを見つけようとしていると思いますか?

public function update(User $user, Message $message)
{
   return true;
}

ここでは、物事がどのように機能するかを確認するために、テストを true または false に切り替えています。しかし、メッセージコントローラーでこれを行うと:

if ($user->can('update', $message)) {
    return 'You can update this post';
}

うまくいきません。また、$this->authorize('update', $message); を使用してコントローラーで承認を確認する別の方法にも遭遇しました。しかし、それもうまくいきませんでした。

ありがとうございました。

4

1 に答える 1

1

そのため、システムを実行した後、システムを実行しました。私は多くのことを変更し、自分が何をしたのか正確にわからないほど多くの場所で立ち往生しました。しかし、最大の違いは、ポリシーの登録方法を変更したことのようです。AuthServiceProvider 内の policies 配列には、どうやらフォーマット中に記述されている例があります。ドキュメントでは最後に ::class の形式でモデルとポリシーを登録するように記載されていますが、私は String 形式を使用しました。これは私の問題だと思います。また、Message::class アプローチを使用する代わりに、メッセージの実際のインスタンスを authorize メソッドに渡す必要がありました。

于 2016-09-28T13:15:22.983 に答える