2012-11-05 49 views
0

我試圖用一個自定義的用戶提供認證,以及默認的登錄表單沒有用戶提供。沒有爲用戶「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()

回答

0

找到我的問題返回true。這個異常在refreshUser()中引發。在那裏我檢查了User類的實例,如文檔中所示,但我在命名空間中犯了一個錯誤。對於一個不存在的類有一個'use'語句,它沒有拋出任何php錯誤。