1

各ユーザーが自分のレコードに対して CRUD アクションを実行できる、複数ユーザーの CMS Web サイトを実装したいと考えています。これは、モデル レベルではなく、レコード レベルでセキュリティを実装する必要があることを意味します。

私は2つの解決策を思いつきました:

  1. 各モデルにowner_idフィールドがあります。
  2. ユーザーが変更するモデル用に、ユーザーごとにデータベースを用意します。すべての関連レコード (ユーザーのデータ (名前、電子メール、ユーザー名、パスワード)、管理者によって編集されたがユーザーによって編集されていないモデルなど) のメイン データベースを保持します。

解決策 2、Apache の助けを借りて実装を考えていました。たとえば、user3 にはhttp://user3_website.mydomain.com/があり、これは www.mydomain.com のメイン Web サイトとは別の Web サイトになります。/web/uploadsand を除くすべてのディレクトリをシンボリックリンクします/config

  • /config- user3 のデータベース構成が必要です
  • /web/uploads- アップロードに使用します。

Symfony でこれを実装するためのベスト プラクティス/設計パターンはありますか? ユーザーに基づいてデータベースを動的に選択できる Web サイト (解決策 2) を開発したことがないので、これが理にかなっているのか疑問に思っています。

私は Symfony 1.x の経験がありますが、Symfony2 での開発はまだ行っていません。

4

1 に答える 1

1

解決策 1 を使用し、owner_id フィールドを持つすべてのインスタンスに対して 1 つのデータベースを用意します。そのように維持する方が簡単です。ある時点でデータベースに変更を加える必要が生じる場合があり、複数のデータベースでそれを行わなければならないことは、何らかの方法で自動化しない限り、悪夢になる可能性があります。

考慮すべき重大なセキュリティ上の問題がない限り、別のデータベースでそれを行う利点はほとんどありません。

于 2012-05-28T11:11:15.277 に答える