0
我有在得到已登錄的用戶的角色問題
我試圖重寫SecurityController並有下面的代碼:獲取用戶的角色與FOSUserBundle的Symfony2登錄後
public function loginAction(Request $request)
{
$userManager = $this->get('fos_user.user_manager');
$userId = $this->get('security.context')->getToken()->getUser()->getId();
$user = $userManager->findUserBy(array('id'=>$userId));
if($user->hasRole('ROLE_ADMIN') && $this->get('security.context')->isGranted('IS_AUTHENTICATED_ANONYMOUSLY')){
return new RedirectResponse($this->generateUrl('adminpage'));
}
if($user->hasRole('ROLE_ACCOUNTING') && $this->get('security.context')->isGranted('IS_AUTHENTICATED_ANONYMOUSLY')){
return new RedirectResponse($this->generateUrl('accountingpage'));
}
....
這裏的問題是,的getId()拋出一個錯誤,像這樣:
Error: Call to a member function getId() on string
我試着像這樣用下面的代碼另一種方法:
if($this->get('security.context')->isGranted('ROLE_ADMIN') && $this->get('security.context')->isGranted('IS_AUTHENTICATED_ANONYMOUSLY')){
return new RedirectResponse($this->generateUrl('adminpage'));
}
if($this->get('security.context')->isGranted('ROLE_ACCOUNTING') && $this->get('security.context')->isGranted('IS_AUTHENTICATED_ANONYMOUSLY')){
return new RedirectResponse($this->generateUrl('accountingpage'));
}
但是,即使我使用ROLE_ACCOUNTING登錄了一個用戶,它總是評估爲ROLE_ADMIN,從而給我一個Access Denied消息。
我該如何解決這個問題?
非常感謝!
PS。我用的Symfony 2.7
什麼版本的symfony? –