我有symfony2应用程序。
我想使用控制器清除所有会话和cookie以及注销应用程序。但是当我点击浏览器中的后退按钮后,它会返回应用程序页面而不是登录页面。
在PHP header
用于重定向页面,但在symfony我不知道如何解决这个问题。
这是我的代码。
的indexAction
$session = $this->getRequest()->getSession();
$em = $this->getDoctrine()->getManager();
$user = new Loginsec();
if ($request->getMethod() == "POST") {
$session->clear();
$username = $request->get('user');
$password = $request->get('pass');
$remember = $request->get('remember');
if ($username != "" && $password != "") {
$Login = $this->checklogin($username, $password);
if ($Login) {
if ($remember != '') {
$response = new Response();
$cookiename = new Cookie('cookname',$username,time()+3600*24*7,'/LoginProject');
$response->headers->setcookie($cookiename);
$response->setContent($cookiename);
$response->send();
}
//Manage Session
$user->setUser($username);
$session->set('user',$username);
$session->start();
return $this->render('LoginLoginBundle:Default:Company.html.twig', array('name' => $session->get('user'));
} else {
return $this->render('LoginLoginBundle:Default:Login.html.twig', array('error' => 'Login Failed'));
}
} else {
return $this->render('LoginLoginBundle:Default:Login.html.twig', array('error' => 'Input required Fields'));
}
} else {
//Get SESSION
if ($session->has('user') && $session->has('pass')) {
$login = $this->checklogin($session->get('user'), $session->get('pass'));
if($login){
return $this->render('LoginLoginBundle:Default:Company.html.twig', array('name' => $session->get('user'));
}
}elseif($request->cookies->get('cookname')){
//Get Cookie
$request= $this->get('request');
$login = $this->checklogin($request->cookies->get('cookname'),$request->cookies->get('cookpass')) ;
if($login){
return $this->render('LoginLoginBundle:Default:Login.html.twig', array('error' => 'Login Using Cookie'));
}
} else {
return $this->render('LoginLoginBundle:Default:Login.html.twig');
}
}
logoutAction
Public function logoutAction(Request $request) {
$session = $this->getRequest()->getSession();
$session->clear('user');
$session->remove('user');
unset($session);
$response = new Response();
$response->headers->clearCookie('cookname') ;
$response->send();
return $this->render('LoginLoginBundle:Default:Login.html.twig');
}
如果有任何想法,请帮助我。
答案 0 :(得分:0)
我只是在回顾我的问题并找到了这个问题。实际上很久以前它已经解决了。
使用
取消设置会话变量$session->remove('<Parameter>');
实施例
$session->remove('user');