2011-10-16 118 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); 
} 
相关问题