1

すべてが何らかの方法で単一のユーザーに関連付けられているモデルがあります (例: ユーザー -> クライアント -> プロファイル)。現在、ユーザーは自分のデータに対して (C)RUD のみを許可する必要があります (プロファイルの所有者のみが /profile/edit/[hisId] にアクセスできるようにする必要があります)。そのため、ほぼすべてのデータベース操作で "'User.id' = > $this->Session->read('Auth.User.id')" を含める必要があります。これには、モデル関数 (find など) が常にユーザー テーブルに「途中で」参加する必要があります (または、データ所有者を複数のテーブルに保存することは、これを行うには良い方法ではないようです)。

これは、さまざまなモデルとアクションに対してどのように正しい方法で行われますか (特に、すべてのアクションでユーザー ID を比較することなく)。モデルのコールバック関数にある可能性がありますが、現時点では一般的な解決策は見当たりません。

これは大げさなシナリオではないように思われるため、非常に明白な解決策を見落としている可能性があります。

ご協力いただきありがとうございます!

4

1 に答える 1

0

適切なすべてのモデルが継承するスーパークラスを作成します。beforeFind などのモデル コールバック メソッドを使用して権限を確認します。

http://book.cakephp.org/view/76/Callback-Methods

于 2009-11-17T15:23:53.340 に答える