【问题标题】:Symfony 2 Custom User ProviderSymfony 2 自定义用户提供程序
【发布时间】:2021-03-13 00:18:58
【问题描述】:

我正在努力让ShibbolethBundle (https://github.com/rmoreas/ShibbolethBundle) 工作。但坚持在登录时创建一个新用户。我发现userProvider 不是正确的类(在这里实现ShibbolethUserProviderInterface 的类https://github.com/rmoreas/ShibbolethBundle/blob/master/Security/ShibbolethAuthProvider.php#L109

我的自定义提供程序是这样定义的:

namespace Meot\FormBundle\Entity;
...
class UserRepository extends EntityRepository implements ShibbolethUserProviderInterface {
...
}

安全性.xml

....
security:
     providers:
         main_provider:
             entity: { class: Meot\FormBundle\Entity\User }

     firewalls:
         dev:
             pattern:  ^/(_(profiler|wdt)|css|images|js)/
             security: false
         secured_area:
             pattern:    ^/
             shibboleth: ~
             logout:
                 path: /logout
                 target: /
                 success_handler: security.logout.handler.shibboleth

我发现这本食谱 (http://symfony.com/doc/current/cookbook/security/entity_provider.html) 指出

为了完成实现,安全层的配置 必须更改以告诉 Symfony 使用新的自定义实体提供程序 而不是通用的 Doctrine 实体提供者。这是微不足道的 通过删除属性字段来实现 security.yml 的 security.providers.administrators.entity 部分 文件。

试过了,没用。用户提供者的类仍然是Symfony\Bridge\Doctrine\Security\User\EntityUserProvider

我想知道通过删除属性字段,Symfony 是如何找到我的自定义用户提供程序的?

谢谢。

【问题讨论】:

    标签: symfony symfony-2.1 shibboleth symfony-security


    【解决方案1】:

    我想通了。似乎 DI 容器只是在 security.xml 中的提供程序中指定“实体”时创建“EntityUserProvider”。然后 AuthenticationProvider 只是调用用户提供程序中的方法。所以我必须为用户提供者创建一个服务,并在 security.xml 的提供者部分指定 ID。

    src/Meot/FormBundle/Resources/config/services.xml

    <parameters>
        <parameter key="custom_user_provider.class">Meot\FormBundle\Entity\UserRepository</parameter>
        <parameter key="custom_user_entity">Meot\FormBundle\Entity\User</parameter>
    </parameters>
    <services>
        <service id="custom_user_provider" class="%custom_user_provider.class%"
            factory-service="doctrine" factory-method="getRepository">
            <argument>%custom_user_entity%</argument>
        </service>
    </services>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-04-01
      • 1970-01-01
      • 2013-10-23
      • 1970-01-01
      • 2014-09-20
      • 1970-01-01
      • 2018-02-23
      相关资源
      最近更新 更多