Symfony - Исключение сопоставления - класс PreAuthenticatedToken не найден в настроенных цепочках пространств имен App \ Entity - PullRequest
0 голосов
/ 08 сентября 2018

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

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 Ответ

0 голосов
/ 08 сентября 2018

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

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

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

$tokenStorage->setToken(null);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...