2012-05-28 66 views
1

我想實現一個多用戶CMS網站,每個用戶都可以在自己的記錄上執行CRUD操作。這意味着安全應該在記錄級而不是模型級執行。如何實現多個用戶cms?

我拿出2級的解決方案:

  1. 每個模型有一個owner_id場。
  2. 爲每個用戶爲其修改的模型提供一個數據庫。保留所有相關記錄的主數據庫(如用戶數據(姓名,電子郵件,用戶名,密碼),管理員編輯的模型,但不包括用戶等)。

方案2,我想與Apache的幫助下實現的。例如,我將爲用戶3提供http://user3_website.mydomain.com/,這將成爲主網站www.mydomain.com的單獨網站。我若非符號鏈接的所有目錄從/web/uploads/config

  • /config - 我需要數據庫的配置用戶3
  • /web/uploads - 我會用他們的上傳。

是否有一個最佳實踐/設計模式與Symfony的實現呢?我從來沒有開發過一個可以根據用戶動態選擇數據庫的網站(解決方案2),所以我想知道這是否合理。

我有Symfony 1.x的經驗,但還沒有在Symfony2上做過任何開發。

回答

1

我會去解決方案1,擁有一個數據庫的所有實例與owner_id字段。保持這種方式更容易。在某些情況下,您可能必須對數據庫進行更改,並且必須在多個數據庫上執行此操作才能成爲惡夢,除非您以某種方式自動執行該操作。

除非您有一些嚴重的安全問題需要考慮,否則在單獨的數據庫中執行它幾乎沒有任何優勢。

+0

如果我使用了很多爲單個用戶設計的第三方軟件/插件,該怎麼辦?在這種情況下,我將不得不擴展所有這些,並添加owner_id,並確保我不會破壞它們。 這就是爲什麼我考慮解決方案2的原因。 您怎麼看? –

+0

對不起,我直到現在才注意到你的評論。在這種情況下,您可能沒有選擇,只能使用解決方案2,擴展或更改第三方軟件和插件可能會很快成爲一個巨大的維護問題。 – h00ligan