FOSUserBundle额外的身份验证标准

时间:2013-01-30 23:05:14

标签: symfony symfony-2.2

我正在开发一个多租户应用程序,我需要完成一些规则来检查用户何时可以进行身份​​验证(我不是在讨论角色,尝试登录时应该返回“无效的用户名或密码”)。

我的问题是:这些额外检查的最佳位置在哪里?

3 个答案:

答案 0 :(得分:1)

我认为您最好的选择是阅读FosUserBundle中与用户相关的课程。 我通过在UserManager.php

中添加自定义方法制作了许多内容

FOS调用许多链式方法,您可以根据需要浏览这些文件和chnage

另请注意

UserListerner.php User.php

答案 1 :(得分:1)

这取决于您打算执行的检查类型,但通常最好的方法是使用自定义安全选民。

官方文档中有一个示例显示如何实施IP黑名单: http://symfony.com/doc/current/cookbook/security/voters.html

答案 2 :(得分:0)

问题是陈旧的,但我认为仍然非常相关。答案帮助我走上了正确的道路(FOSUserBundle 2.0与Symfony 3.3) - 如果有人还在寻找,这里有更多细节 https://symfony.com/doc/master/bundles/FOSUserBundle/user_manager.html

这部分对我来说很关键:

  

您可以替换用户管理器的默认实现   定义服务实现   FOS\UserBundle\Model\UserManagerInterface并在其中设置其ID   组态。默认实现的id是   fos_user.user_manager.default

     

fos_user: # ... service: user_manager: custom_user_manager_id

     

您的自定义实施可以扩展FOS\UserBundle\Model\UserManager   重用通用逻辑。

就我而言,我只是将整个FOS\UserBundle\Doctrine\UserManager(扩展FOS\UserBundle\Model\UserManager)复制到我的AppBundle\Services作为我的起点。

我还必须从这里复制注射:vendor/friendsofsymfony/user-bundle/Resources/config/doctrine.xml