【问题标题】:There is no user provider for user "Myapp\MainBundle\Document\User\User"用户“Myapp\MainBundle\Document\User\User”没有用户提供程序
【发布时间】:2012-11-05 18:25:39
【问题描述】:

我正在尝试使用自定义用户提供程序和默认登录表单进行身份验证。

登录部分似乎有效,因为如果我输入的密码不正确,它会显示“凭据错误”。如果我输入正确的密码并捕获重定向,我可以在工具栏中看到我的用户名。

但重定向后,我得到There is no user provider for user "Myapp\MainBundle\Document\User\User"

我的用户提供者是这样配置的:

# security.yml
providers:
    database:
        id: user_manager
firewalls:
    dev:
        pattern:  ^/(_(profiler|wdt)|css|images|js)/
        security: false
    main:
        pattern: ^/
        form_login:
            login_path: /login
            check_path: /login_check
        logout:
            path:   /logout
            target: /
        anonymous: true

# config.yml
services:
    user_manager:
        class: Myapp\MainBundle\Service\User\UserManager
        factory_service: doctrine_mongodb
        factory_method:  getRepository
        arguments: [ 'MyappMainBundle:User\User' ]
        calls:
            - [ setEncoder, [ @security.encoder_factory ] ]

这是用户提供者(抽象类扩展自DocumentRepository,并实现了UserProviderInterface):

namespace Myapp\MainBundle\Service\User;

use Myvendor\UserBundle\Service\User\AbstractUserManager;
use Myapp\MainBundle\Document\User\User;

class UserManager extends AbstractUserManager {
    public function createUser() {
        return new User;
    }

    public function supportsClass($class) {
        return $class === 'Myapp\MainBundle\Document\User\User';
    }
}

怎么会这样?为什么它找到登录的提供者,但在下一个请求时失败?

Symfony 版本:2.1.3

更新

我调试了该异常之前出现的代码,发现它被捕获(对于我唯一的提供者):"Symfony\Component\Security\Core\Exception\UnsupportedUserException" "Instances of "Myapp\MainBundle\Document\User\User" are not supported.。这怎么可能?我什至尝试在supportsClass() 中返回true

【问题讨论】:

    标签: security symfony symfony-2.1


    【解决方案1】:

    发现我的问题。在 refreshUser() 中抛出此异常。在那里,我检查了 User 类的实例,如文档中所示,但我在命名空间中犯了一个错误。有一个不存在的类的“使用”语句,它没有抛出任何 php 错误。

    【讨论】:

      猜你喜欢
      • 2013-11-05
      • 2021-05-01
      • 1970-01-01
      • 2012-07-22
      • 2015-02-01
      • 2011-12-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多