2

管理者としてユーザーに切り替えるとsite.loc/?_switch_user=user@email.com、ロールが取得されませんROLE_PREVIOUS_ADMIN。どのコードを表示すればよいかわかりません..

symfony バージョン: symfony2 2.2.2

ユーザー.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()));
}
4

1 に答える 1

2

クラスに実装する必要がありますEquatableInterfaceUser

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);
    }

    // ...
}
于 2013-11-22T12:22:54.883 に答える