检查用户配置文件更改页面Symfony2时

时间:2013-12-17 09:27:19

标签: symfony

我用FOSUserBundle创建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 个答案:

答案 0 :(得分:2)

您可以使用JMSSecurityExtraBundle为每个操作添加注释:

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

或不使用捆绑包:

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

它更简单。也许是为你的所有控制器制作它的另一个解决方案,但我不知道。

答案 1 :(得分:0)

您可以使用请求侦听器: http://symfony.com/doc/current/cookbook/service_container/event_listener.html#request-events-checking-types

只需添加您的魔法并通过活动重定向到主页