- markitosgv/JWTRefreshTokenBundle. В дефолтной Entity\User я добавил поле $token. Как при обновлении токена обновить поле $token? То есть, когда мы делаем запрос на refresh_token, в ответе мы получаем поле access_token и refresh_token. В момент генерации ответа мне нужно взять access_token и обновить поле $token. Как такое сделать? В моей реализации - я создал сервис, который слушает событие lexik_jwt_authentication.on_authentication_success и у которого обязательно должен быть priority= -100, чтобы вызваться последним в генерации ответа для обновления токена. И в нем я просто беру в сохраняю юзера:
$user = $this->tokenStorage->getToken()->getUser();
$this->entityManager->persist($user);
$this->entityManager->flush();
Сохраняю юзера без того, чтобы обновлять поле - потому что оно уже оказывается обновленно)) Где-то в недрах либы, $token обновленяется. Хз почему и где. Не могу найти. Обновляется, но не сохраняется. Кто может подсказать более правильное решение?
persist не добавит твой объект в UOW для обновления, тебе его нужно получить через em, учитывая что поле уже обновляется, для чего тебе его обновлять? если копать дальше, то тебе достаточно в TokenStorage обновить паспорт пользователя объектом с новым токеном
Обновляется лишь свойство в объекте. Но не в БД
у тебя оно не обновляется потому что не persist, и было бы странным при обновлении токена в в аутентификаторе обновлять и в хранилище, и если я не ошибаюсь tokenStorage кешируется и никка не связан с четнием из бд
Обсуждают сегодня