Php Symfony2用户切换缺少角色\u上一个\u切换后的管理员

Php Symfony2用户切换缺少角色\u上一个\u切换后的管理员,php,symfony,Php,Symfony,当我以管理员身份切换到用户site.loc/?\u切换\u用户时=user@email.com我没有角色role\u PREVIOUS\u ADMIN。 我不确定我应该给你看哪段代码 Symfony版本:symfony2.2.2 User.php /** * @see \Serializable::serialize() */ public function serialize() { return serialize(array( $this->email

当我以管理员身份切换到用户
site.loc/?\u切换\u用户时=user@email.com
我没有角色
role\u PREVIOUS\u ADMIN
。 我不确定我应该给你看哪段代码

Symfony版本:symfony2.2.2

User.php

/**
 * @see \Serializable::serialize()
 */
public function serialize()
{
    return serialize(array(
        $this->email
    ));
}

/**
 * @see \Serializable::unserialize()
 */
public function unserialize($serialized)
{
    list (
        $this->email
    ) = unserialize($serialized);
}

public function isAccountNonExpired()
{
    return true;
}

public function isAccountNonLocked()
{
    return true;
}

public function isCredentialsNonExpired()
{
    return true;
}

public function isEnabled()
{
    return $this->isActive;
}

/**
 * @inheritDoc
 */
public function eraseCredentials()
{
}

public function isEqualTo(UserInterface $user)
{
    return
        md5($user->getUsername()) == md5($this->getUsername()) &&
        md5(serialize($user->getGroups())) == md5(serialize($this->getGroups()));
}
您应该为
用户
类实现:

class User implements UserInterface, EquatableInterface, \Serializable {

    // ...

    public function isEqualTo(UserInterface $user) {
        return $this->username === $user->getUsername();
    }

    public function serialize() {
        return serialize(array(
            $this->id,
            $this->username,
        ));
    }

    public function unserialize($serialized) {
        list($this->id, $this->username) = unserialize($serialized);
    }

    // ...
}

切换时,您是否正确地获得其他角色?您是否使用自定义安全侦听器?其他角色正确,我没有安全侦听器。我在
success
上有一个
AuthenticationHandler
,它设置用户的登录时间。这里唯一不同的是序列化和非序列化函数。我的类序列化$id而不是$email。