各ユーザーが自分のレコードに対して CRUD アクションを実行できる、複数ユーザーの CMS Web サイトを実装したいと考えています。これは、モデル レベルではなく、レコード レベルでセキュリティを実装する必要があることを意味します。
私は2つの解決策を思いつきました:
- 各モデルに
owner_id
フィールドがあります。 - ユーザーが変更するモデル用に、ユーザーごとにデータベースを用意します。すべての関連レコード (ユーザーのデータ (名前、電子メール、ユーザー名、パスワード)、管理者によって編集されたがユーザーによって編集されていないモデルなど) のメイン データベースを保持します。
解決策 2、Apache の助けを借りて実装を考えていました。たとえば、user3 にはhttp://user3_website.mydomain.com/があり、これは www.mydomain.com のメイン Web サイトとは別の Web サイトになります。/web/uploads
and を除くすべてのディレクトリをシンボリックリンクします/config
。
/config
- user3 のデータベース構成が必要です/web/uploads
- アップロードに使用します。
Symfony でこれを実装するためのベスト プラクティス/設計パターンはありますか? ユーザーに基づいてデータベースを動的に選択できる Web サイト (解決策 2) を開発したことがないので、これが理にかなっているのか疑問に思っています。
私は Symfony 1.x の経験がありますが、Symfony2 での開発はまだ行っていません。