【问题标题】:FOSUserBundle extra authentication criteriaFOSUserBundle 额外的认证标准
【发布时间】:2013-01-30 23:05:14
【问题描述】:

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

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

【问题讨论】:

    标签: symfony symfony-2.2


    【解决方案1】:

    我认为最好的办法是阅读 FosUserBundle 中的用户相关类。 我通过在 UserManager.php 中添加自定义方法进行了许多更改

    FOS 调用许多链式方法,您可以浏览这些文件并根据需要进行更改

    也要注意

    UserListerner.php User.php

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        【解决方案3】:

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

        这部分对我来说很关键:

        您可以将用户管理器的默认实现替换为 定义服务实现 FOS\UserBundle\Model\UserManagerInterface 并在 配置。默认实现的 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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2014-11-26
          • 1970-01-01
          • 1970-01-01
          • 2015-01-06
          • 1970-01-01
          • 2022-07-09
          • 2012-06-26
          相关资源
          最近更新 更多