我使用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'));
}
如果有任何其他方式来处理这种情况,那么请帮助我。 谢谢。
答案 0 :(得分:0)
只需要在配置文件操作中使用ROLE_USER
角色,防火墙就会执行重定向到登录表单,然后重定向回来的东西:
/**
* @Secure("ROLE_USER")
*/
public function profileAction()
{
// ...
}
有关更多信息,请阅读Symfony书籍的Security chapter。