Symfony — Исключение сопоставления — класс ‘PreAuthenticatedToken’ не найден в настроенных цепочках пространств имен App \ Entity

Я пытаюсь выйти из системы моего пользователя, получая его токен (который существует и работает) следующим образом:

public function logout(Request $request, TokenStorageInterface $tokenStorage)
{
$em = $this->get('doctrine.orm.entity_manager');
$user = $this->getUser();
$user->setConnected(false);
$em->remove($tokenStorage->getToken()); // Error is here
$em->persist($user);
$em->flush();
}

Когда я запрашиваю этот метод, я получаю следующую ошибку:

Класс ‘Symfony \ Component \ Security \ Core \ Authentication \ Token \ PreAuthenticatedToken’ не найден в настроенных цепочках пространств имен App \ Entity

Я попытался выполнить поиск в Google и SO, но не нашел ни одной связанной темы, так как этот класс не является сущностью.

Я попытался включить выражение «use» поверх моего контроллера, но это не сработало.

Что я делаю неправильно ?

Спасибо всем, кто найдет время, чтобы прочитать или ответить на это.

1

Решение

Ошибка в том, что вы используете менеджер сущностей доктрины, чтобы что-то делать с хранилищем токенов (я думаю, это cookie-файл сеанса), и это, конечно, не та сущность, о которой доктрина ничего не знает. Просто удали свою линию

$em->remove($tokenStorage->getToken()); // <--- REMOVE

и вместо этого сделайте это:

$tokenStorage->setToken(null);
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]