我已经和Symfony2合作了几个星期,并且喜欢它。
然而,我对某方面有点困惑。假设我有两个捆绑包,每个捆绑包都有一个“用户”实体,用于存储有关该用户的信息。
但是,我希望能够使用网站管理员选择的任何身份验证进行实际身份验证(即使它不是我的捆绑包中的某个用户实体)。
组织这些实体并将它们全部链接起来的最佳做法是什么,同时保持对实际身份验证的灵活性。
感谢。
更新:这是一个澄清。
想象一下,我有两个捆绑包:论坛和维基。
现在,对于用户来说,这两个系统需要存储许多不同的数据。因此,每个人都有一些地方来存储它们(比如两个不同的表)。但是,它们都不存储身份验证信息,只存储其他信息。
我们的想法是,无论使用哪种身份验证方法,他们都可以获取该令牌,然后确定他们应该在自己的捆绑包中使用哪些用户数据。这样,捆绑包就可以独立于认证方法而独立工作。
答案 0 :(得分:0)
我认为你想避免拥有多个用户实体。要快速将一些最佳实践集成到您的应用程序中,请查看FOSUserBundle。这将为您提供大约80%的功能,允许用户注册,登录等。在您的应用程序中创建自己的UserBundle,扩展FOSUserBundle。例如,您的用户实体可能如下所示:
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
)作为规范用户实体。