2012-06-12 32 views
0

我一直在使用Symfony2幾個星期,並熱愛它。Symfony2最佳實踐 - 正確組織需要用戶的軟件包

但是,我對某個方面有些困惑。假設我有兩個捆綁包,每個捆綁包都有一個「用戶」實體,用於存儲有關該用戶的信息。

但是,我希望能夠通過網站管理員選擇的任何身份驗證(即使它不是來自我的包中的用戶實體之一)進行實際身份驗證。

什麼是組織這些實體並將它們全部鏈接在一起的最佳實踐,同時保持實際身份驗證的靈活性。

謝謝。


更新:這是一個澄清。

想象一下,我有兩個捆綁:論壇和維基。

現在,對於用戶來說,這兩個系統會存儲很多不同的數據。所以,每個人都有一些地方可以存儲它們(比如兩個不同的表格)。但是,他們都不存儲認證信息,只存儲其他信息。

這個想法是,無論使用哪種認證方法,他們都能夠獲得該令牌,然後確定他們應該在自己的捆綁包中使用哪些用戶數據。這樣,捆綁軟件就可以獨立於身份驗證方法工作。

+0

你是說數據庫中實際上有多個用戶表,或者只是說您使用多個實體類來進行類似繼承的鑑別器列? –

+0

它等於多個用戶表,種類。查看我的編輯以獲得澄清。 – samanime

回答

0

我想你想避免有多個用戶實體。要快速將一些最佳實踐集成到您的應用程序中,請查看FOSUserBundle。這將爲您提供大約80%的功能,以允許用戶註冊,登錄等。在擴展FOSUserBundle的應用程序中創建您自己的UserBundle。例如,您的用戶實體可能會是這樣的:

use FOS\UserBundle\Entity\User as BaseUser; 

/** 
* Extend the FOSUserBundle base User class. 
* @ORM\Entity 
* @ORM\Table(name="user") 
*/ 
class User extends BaseUser { 
    ... 
} 

參考這個擴展的用戶實體(YourApp\UserBundle\Entity\User)作爲典型用戶實體在整個項目中的所有其他包。

+0

這可以工作,但我的目標(我越讀越不可能)就是允許網站管理員使用任何身份驗證方法,甚至像內存中的一樣。儘管如此,似乎沒有一個人工字符串外鍵是不可能的,而外鍵非常快速變得非常難看。儘管如此,我會檢查那個包。謝謝。 – samanime