我已经在模拟另一个用户时模拟一个用户?

zoo*_*opo 3 php symfony

我希望能够在我的应用中模拟用户,因此我遵循了网站上教程

如果我尝试将用户从用户“ A”更改为用户“ B”,则可以,但是如果我已经模拟用户“ B”的同时尝试更改为用户“ C”,则该attemptSwitchUser方法将抛出以下例外:

You are already switched to "B" user.
500 Internal Server Error - LogicException
Run Code Online (Sandbox Code Playgroud)

这是因为此方法检查当前用户名(B)是否等于我们要模拟的用户名(C)

$token = $this->securityContext->getToken();
$originalToken = $this->getOriginalToken($token);

if (false !== $originalToken) {
    if ($token->getUsername() === $request->get($this->usernameParameter)) {
        return $token;
    } else {
        throw new \LogicException(sprintf('You are already switched to "%s" user.', $token->getUsername()));
    }
}
Run Code Online (Sandbox Code Playgroud)

但是显然不可能永远不会这样,所以我不知道这是否是Symfony代码中的错误,或者我是否还缺少其他东西。

这真的是一个错误吗?是否可以在不注释掉这段代码的情况下实现此功能?

Fed*_*kun 5

切换的用户无法切换到其他。在执行此操作之前,您需要切换回原始用户(?_switch_user=_exit