Symfony 3.4测试失败,“logout_on_user_change”选项设置为“true”

时间:2018-05-25 09:34:35

标签: php symfony

我遇到问题,logout_on_user_change选项设置为true(这是Symfony 4中的默认行为)。 但只有在运行单元测试时。在我的开发环境中,一切(登录,注销等)都可以正常工作。 但我尝试登录的单元测试失败了。身份验证不再有效。我想用户必须在后台发生一些事情,由于这个选项导致自动注销。

我已根据其中的建议更新了用户实体的serialize()方法:symfony 3.4 "Refreshing a deauthenticated user is deprecated"

有人遇到同样的问题吗?

问题已解决: 自己找到解决方案: 这使我自己朝着正确的方向前进:Token was deauthenticated after trying to refresh it

值得注意的是,isEqualTo()中的检查需要使用与serialize()函数相同的字段:

所以在我的情况下,这适用于启用logout_on_user_change

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

/**
 * @see \Serializable::unserialize()
 */
public function unserialize($serialized)
{
    list (
        $this->id,
        $this->email,
        $this->password,
        $this->salt
    ) = unserialize($serialized, ['allowed_classes' => false]);
}

public function isEqualTo(UserInterface $user)
{
    if ($this->id !== $user->getId()) {
        return false;
    }

    if ($this->password !== $user->getPassword()) {
        return false;
    }

    if ($this->salt !== $user->getSalt()) {
        return false;
    }

    if ($this->email !== $user->getEmail()) {
        return false;
    }

    return true;
}

0 个答案:

没有答案