【发布时间】:2017-04-14 15:18:47
【问题描述】:
首先,我是 Symfony 的新手,所以我不知道 FOSUserBundle 等包的确切功能以及术语。
我正在寻找一种使用 Symfony 安全组件的方法,使我能够将用户的登录凭据(例如,登录名和密码,可能是角色)与实际的用户元数据(例如第一个姓名、姓氏、团体、出生日期等)。
这个想法是用户可以使用不同的登录名/密码集登录,并且仍然被识别为同一用户(最终这意味着,获得相同的User 对象)。
对我来说,这在与多个身份验证提供程序结合使用时特别方便。例如,如果我想让我的用户通过 OAuth2 服务登录作为替代,而不是使用本地托管的登录名/密码组合登录(例如 StackExchange 所做的),如何我会这样做吗?
我已经阅读了多页 Symfony 的文档,例如:
- https://symfony.com/doc/current/security.html
- https://symfony.com/doc/current/security/entity_provider.html#create-your-user-entity
后者甚至在1) Create your User Entity 中说password 是User 的一个字段。
【问题讨论】:
-
创建 2 个模型,例如
User和UserCredentials,具有一对多的关系。使用User保存您的元数据,使用UserCredentials进行身份验证。 -
这实际上是我在移植到 Symfony 之前所做的。我在这里看到的问题是
Controller::getUser()会返回一个UserCredentials的实例,这可能会导致混淆,因为函数名称是getUser。
标签: php symfony authentication