重定向后清除Symfony2安全令牌

时间:2013-03-22 12:09:37

标签: security symfony

我已经构建了一个登录表单,其中包含一个成功设置身份验证令牌的自定义提供程序。

我可以看到"登录为"在分析器中,在重定向拦截页面上。然后表单重定向到我的成功页面。

出于某种原因,我的成功页面,并没有意识到我已登录并循环回登录页面。

security:
    encoders:
        EP\Common\Entity\User: sha1
        encode_as_base64: false

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

    providers:
        main:
            entity: { class EP\Common\Entity\User, property: username }

    firewalls:
        dev:
            pattern:  ^/(_(profiler|wdt)|css|images|js)/
            security: false

        login_form:
            pattern: ^/cms/(login|logout)$
            security: false

        cms:
            pattern:  ^/cms/
            security: true
            provider: main
            form_login:
                check_path: /cms/login_check
                login_path: /cms/login
            logout:
                path:   /cms/logout
                target: /cms/login


    access_control:
        - { path: ^/cms/login, roles: IS_AUTHENTICATED_ANONYMOUSLY, requires_channel: http }
        - { path: /cms, roles: ROLE_USER }

1 个答案:

答案 0 :(得分:0)

我发现了为什么会这样。

我已将这些方法添加到我的User类中(注意unserialize上的[0] - doctrine正在根据ID的第一个字符查找用户的ID):

/**
 * (PHP 5 &gt;= 5.1.0)<br/>
 * String representation of object
 * @link http://php.net/manual/en/serializable.serialize.php
 * @return string the string representation of the object or null
 */
public function serialize()
{

    return serialize($this->getId());
}

/**
 * (PHP 5 &gt;= 5.1.0)<br/>
 * Constructs the object
 * @link http://php.net/manual/en/serializable.unserialize.php
 * @param string $serialized <p>
 * The string representation of the object.
 * </p>
 * @return mixed the original value unserialized.
 */
public function unserialize($serialized)
{

    $this->_uuid = unserialize($serialized)[0];
}