2011-10-16 117 views
1

我有一個Symfony 2應用程序安裝,我試圖使用安全包和用戶實體來處理登錄。當我嘗試喲查看/關於頁面時,我被重定向到登錄頁面,然後在我登錄後使用正確的信息重定向到登錄頁面。我知道我輸入了存儲在數據庫中的正確信息,因爲如果輸入錯誤的東西,我會在登錄頁面上看到無效的密碼錯誤。另外,當我查看日誌時,查找用戶名的查詢沒有傳遞給它的參數。有任何想法嗎?Symfony 2登錄重定向回登錄頁面

security.yml

security: 
    encoders: 
     Company\Project\Entity\User: 
      algorithm: sha512 
      encode-as-base64: true 

    role_hierarchy: 
     ROLE_ADMIN:  ROLE_USER 
     ROLE_SUPER_ADMIN: [ROLE_USER, ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH] 

    providers: 
     main: 
      entity: { class: Company\Project\Entity\User} 

    firewalls: 
     main: 
      pattern: ^/ 
      form_login: 
       check_path: /login_check 
       login_path: /login 

      logout: 
       path: /logout 
       target:/
      anonymous: ~ 

    access_control: 
     - { path: ^/register, roles: IS_AUTHENTICATED_ANONYMOUSLY, requires_channel: https} 
     - { path: ^/login, roles: IS_AUTHENTICATED_ANONYMOUSLY, requires_channel: https } 
     - { path: ^/about, roles: ROLE_ADMIN, requires_channel: https } 

回答

2

NVM我想通了。我不得不在我的用戶實體上實現Serializable。

public function serialize() 
{ 
    return serialize(array( 
     'username'  => $this->getUsername(), 
     'password'  => $this->getPassword(), 
     'salt'  => $this->getSalt(), 
     'roles' => $this->getRoles() 
    )); 
} 

public function unserialize($serializedData) 
{ 
    $unserializedData  = unserialize($serializedData); 

    $this->setUsername(isset($unserializedData['username']) ? $unserializedData['username'] : null); 
    $this->setPassword(isset($unserializedData['password']) ? $unserializedData['password'] : null); 
    $this->setSalt(isset($unserializedData['salt']) ? $unserializedData['salt'] : null); 
} 
相關問題