powiedzmy na przykład ja przyznać nową rolę do aktualnie uwierzytelnionego użytkownika w sterowniku, tak:Symfony 2.3: Jak odświeżyć uwierzytelnionego użytkownika z bazy danych?
$em = $this->getDoctrine()->getManager();
$loggedInUser = $this->get('security.context')->getToken()->getUser();
$loggedInUser->addRole('ROLE_XYZ');
$em->persist($loggedInUser);
$em->flush();
na następnej stronie obciążenia, kiedy chwycić uwierzytelniony użytkownik ponownie:
$loggedInUser = $this->get('security.context')->getToken()->getUser();
Nie dostają tej roli. Zgaduję, ponieważ dzieje się tak dlatego, że użytkownik jest przechowywany w sesji i musi zostać odświeżony.
Jak to zrobić?
Używam FOSUserBundle, jeśli to robi różnicę.
Czy baza danych jest zaktualizowana? – cheesemacfly
Tak, baza danych jest aktualizowana. Więc jeśli wyloguję się i ponownie, nowa rola zostanie odzwierciedlona. –
Sprawdzałem nową rolę w szablonie gałązki za pomocą 'if is_granted ('ROLE_XYZ')'. Zmieniłem to na 'if app.user.hasRole ('ROLE_XYZ')' i teraz działa. Dziwne ... –