2013-12-17 25 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

相关问题