【问题标题】:How do I get the User Provider? - Symfony2我如何获得用户提供者? - Symfony2
【发布时间】:2013-08-01 22:27:19
【问题描述】:

我正在尝试扩展一个类,而我只需要 UserProvider。

我认为传入 '@security.context' 服务并执行下面的代码可以做到,但它不起作用(它只是说 $security_context 不是对象);

// $security_context holds the passed in $security_context service

$security_context->getToken()->getUser(); // doesn't work

如果这有所作为,我正在使用 FOSUserBundle。

当我将它传递给 __construct 时,可能尚未创建用户,但我不确定发生了什么。

那么我如何获得这个用户提供者呢?是否有 security.user_provider 服务?

该脚本允许一组用户提供者,但我只需要并且拥有一个。

--

完整配置:

services.yml:

  security.authentication.rememberme.services.simplehash: #override/extend this class
    class: Acme\MyBundle\ExtendRememberMe
    parent: security.authentication.rememberme.services.abstract
    abstract: true
    arguments:
      - "@security.context"
      - "@doctrine.orm.entity_manager"

Acme\MyBundle\ExtendRememberMe.php

public function __construct( $security_context, $doctrine_entity_manager ) {

    $userProviders = array( $security_context->getToken()->getUser() );

    //etc. (but error due to above line)

{

【问题讨论】:

  • 你能说明你在哪里定义你的服务和你的服务构造函数吗?
  • 已更新。感谢您的帮助。

标签: php symfony


【解决方案1】:

fos 用户提供商是 fos_user.user_provider.usernamefos_user.user_provider.username_email

添加- [@fos_user.user_provider.username] 作为参数。

【讨论】:

  • 感谢您的帮助,但这不起作用。我收到相同的错误消息(不是对象)。我也试过 $fos_user.user_provider。再次感谢,如果您有任何其他想法,我将不胜感激。谢谢。
  • 有效,需要注入provider,调用父类的__construct方法。
  • 嗨。谢谢。我正在调用 parent::__construct 但它说这个错误:Call to a member function supportsClass() on a non-object in /var/framework/symfony/2.3.0/vendor/symfony/symfony/src/Symfony/Component/ Security/Http/RememberMe/AbstractRememberMeServices.php 第 240 行
  • 它适用于所有其他场合,我所做的只是传递您提到的值。有没有办法准确测试“@fos_user.user_provider.username”提供的内容?此外,“@fos_user.user_provider.username”肯定包含用户的用户名,而不是 UserProvider?所以也许不是'@fos_user.user_provider.username'来获取UserProvider???
猜你喜欢
  • 1970-01-01
  • 2014-04-18
  • 2013-02-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-15
  • 2015-04-16
相关资源
最近更新 更多