Вход в Symfony 2 перенаправляет обратно на страницу входа - PullRequest
1 голос
/ 16 октября 2011

У меня установлено приложение Symfony 2, и я пытаюсь использовать пакет безопасности и пользовательский объект для обработки имени входа. Когда я пытаюсь просмотреть страницу / about, меня перенаправляют на страницу входа, а затем, после входа с правильной информацией, меня перенаправляют обратно на страницу входа. Я знаю, что ввел правильную информацию, которая хранится в базе данных, потому что, если я введу неправильные данные, я получу ошибку неверного пароля на странице входа. Кроме того, когда я просматриваю логи, запрос на поиск имени пользователя не имеет переданных ему параметров. Есть идеи?

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 }

1 Ответ

2 голосов
/ 17 октября 2011

нвм я разобрался. Мне пришлось реализовать 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);  
}   
...