symfony2中的PreExecute()函数

时间:2012-10-03 09:14:45

标签: symfony

我使用symfony2开发了一个应用程序,我想知道如何为以下情况编写preExecute()函数symfony2: 当我登录系统时;当我从同一个屏幕注销时,它会重定向我的用户个人资料部分,它会在登录屏幕上杀死会话并重定向我,但是当我点击浏览器的后退按钮时,它会在配置文件屏幕上重定向我,这会向我显示所有用户信息,但是我从同一个屏幕点击下一个进程,然后在登录页面上重定向我。

我只想在这种情况下添加像symfony1.4这样的preExecute函数,所以我检查了会话,如果它是null,那么当我从系统中退出时,如果我点击浏览器的后退按钮,它会在登录页面上重定向我

我已经在profileController.php文件中添加了以下代码,

public function indexAction() {
    $session = $this->get('request')->getSession();
    $userId = $session->get('id');

    if ($userId == 0 || $userId == '') {
        return $this->redirect($this->generateUrl('_security_login'));
    } else {
        //my code 
    }
}

//logout action
public function dologoutAction(){
   $this->get('security.context')->setToken(null);
   $this->get('request')->getSession()->invalidate();
   $this->container->get('request')->getSession('session')->clear();
   return $this->redirect($this->generateUrl('_security_login'));
}

如果有任何其他方式来处理这种情况,那么请帮助我。 谢谢。

1 个答案:

答案 0 :(得分:0)

只需要在配置文件操作中使用ROLE_USER角色,防火墙就会执行重定向到登录表单,然后重定向回来的东西:

/**
 * @Secure("ROLE_USER")
 */
public function profileAction()
{
    // ...
}

有关更多信息,请阅读Symfony书籍的Security chapter