【发布时间】: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