3

我希望能够在我的应用程序中模拟用户,所以我按照网站上的教程进行操作

如果我尝试将我的用户从用户“A”更改为用户“B”,它可以工作,但如果我尝试更改为用户“C”,而我已经在模拟用户“B”,该attemptSwitchUser方法会抛出此异常:

You are already switched to "B" user.
500 Internal Server Error - LogicException

这是因为此方法检查当前用户名 (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()));
    }
}

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

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

4

1 回答 1

5

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

于 2013-05-21T09:06:06.033 回答