如何覆盖FOSUserBundle,以便我可以根据以下组合注册/验证用户:
Email ID + Password + GroupID
而不仅仅是 email + password
因此,电子邮件将不再是唯一的,但 email + groupid
的组合将使用户唯一(每组)并且可以拥有独立的密码 .
我正在使用 FOSUserBundle v2.0.2 与 Symfony 3.4.x
具有有效登录ID的fos_user表行示例:
ID| EMAIL | GROUP | PASSWORD
--+----------------+-------+---------
1 | u1@example.com | 10 | xxxxxxxx
2 | u1@example.com | 11 | xxxxxxxx
3 | u2@example.com | 10 | xxxxxxxx
4 | u2@example.com | 13 | xxxxxxxx
5 | u1@example.com | 12 | xxxxxxxx
2 回答
使用Symfony Guard创建基于表单的检查和登录将不会太难 .
这是一些必需的基本课程 . 将它连接到用户安全性显示在Symfony帮助页面上,还有其他关于使用它的博客文章 .
我不希望用户能够选择他们的组,而是由系统内部管理 . 对于注册,与FOS完成的工作并不多 . 我所需要的只是使用一组新的学说键约束来覆盖User实体 . 我在扩展BaseUser的User实体中添加了以下内容:
登录时,这是一个很大的工作 . 我必须覆盖UserProvider,UserManager,创建CustomUserManager并添加一组具有Group约束的新方法:
此外,我在RegistrationController和ResettingController上进行了覆盖,以采用新的登录和密码重置功能更改 .