3

アプリでユーザーになりすますことができるようにしたいので、ウェブサイトのチュートリアルに従いました

ユーザーをユーザー「A」からユーザー「B」に変更しようとすると機能しますが、既にユーザー「B」になりすましているときにユーザー「C」に変更しようとすると、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