2011-10-16 4 views
1

Symfony 2 애플리케이션이 설치되어 있고 보안 번들과 사용자 엔티티를 사용하여 로그인을 처리하려고합니다. 내가/about 페이지를 보려고하면 로그인 페이지로 리디렉션되고 올바른 정보로 로그인 한 후 로그인 페이지로 다시 리디렉션됩니다. 잘못된 정보를 입력하면 로그인 페이지에 잘못된 암호 오류가 표시되어 데이터베이스에 저장된 올바른 정보를 입력했음을 알 수 있습니다. 또한 로그를 보면 사용자 이름을 찾는 쿼리에 매개 변수가 전달되지 않습니다. 어떤 아이디어?Symfony 2 로그인이 로그인 페이지로 리디렉션됩니다

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

security.yml는 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); 
} 
관련 문제