2013-12-17 53 views
1

創建用戶與FOSUserBundle和用戶創建的時候,我也創建一個配置文件檢查用戶配置文件在變更頁的Symfony2

user和

我想,只要用戶更改頁面,實際檢查該用戶瀏覽被驗證,也有外形

現在在我的控制器我做

$user = $this->getUser(); 
if (!is_object($user)) { //i have to add || null !== $user->getProfile() 
    throw new AccessDeniedException('This user does not have access to this section.'); 
} 

但我不會重複這個代碼在所有的控制器,而我也將檢查用戶是否有一個配置文件,否則重定向到主頁

回答

2

可以使用JMSSecurityExtraBundle添加註釋每個動作:

/** 
* @Secure(roles="ROLE_USER, ROLE_FOO, ROLE_ADMIN") 
*/ 

或不使用束:

if (false === $this->get('security.context')->isGranted('ROLE_ADMIN')) { 
    throw new AccessDeniedException(); 
} 

它更簡單。也許是另一種解決方案,使其爲您的所有控制器,但我不知道它。

+0

也許是最好的解決方案是創建一個服務...好包 – Twinsen

+0

我試試這個註解 '@Secure(roles =「ROLE_ADMIN」)',但是ROLE_USER可以訪問... – Twinsen

+0

您確定您與僅具有ROLE_USER的用戶連接嗎?不要忘記清除緩存並註銷每次你改變用戶的角色 – Amine

相關問題