說,例如我授予當前已驗證用戶一個新的角色在一個控制器,像這樣:Symfony 2.3:如何從數據庫刷新經過身份驗證的用戶?
$em = $this->getDoctrine()->getManager();
$loggedInUser = $this->get('security.context')->getToken()->getUser();
$loggedInUser->addRole('ROLE_XYZ');
$em->persist($loggedInUser);
$em->flush();
在接下來的頁面負載,當我搶再次驗證的用戶:
$loggedInUser = $this->get('security.context')->getToken()->getUser();
他們沒有被賦予這個角色。我猜這是因爲用戶存儲在會話中,需要刷新。
我該怎麼做?
我正在使用FOSUserBundle,如果這有所作爲。
數據庫是否更新? – cheesemacfly
是的數據庫被更新。因此,如果我退出並重新登錄,新角色就會反映出來。 –
我正在使用'if is_granted('ROLE_XYZ')'檢查樹枝模板中的新角色。我改變了這個'如果app.user.hasRole('ROLE_XYZ')'現在它正在工作。奇怪... –