我試圖用一個自定義的用戶提供認證,以及默認的登錄表單沒有用戶提供。沒有爲用戶「MYAPP MainBundle 文檔用戶用戶」
登錄部分似乎工作,因爲如果我把一個不正確的密碼,它說:「壞憑據」。如果我輸入正確的密碼並獲得重定向,我可以在工具欄中看到我的用戶名。
但重定向後,我得到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
UPDATE
我調試的是正確的,異常之前談到的代碼,發現了這個正在逮住(對於我的唯一供應商):"Symfony\Component\Security\Core\Exception\UnsupportedUserException" "Instances of "Myapp\MainBundle\Document\User\User" are not supported.
。這怎麼可能?我甚至嘗試在supportsClass()