在以下登录脚本中,即使我在验证用户后启动会话,也会抛出一个symfony异常,说明:
无法启动会话:已由PHP启动。
以下是我的登录功能(我没有使用symfony令牌和安全等会话):
public function loginAction(Request $request){
if($request->getMethod() == 'POST'){
$mail = $request->get('umail');
$pass = $request->get('upass');
$em = $this->getDoctrine()->getManager();
$rep = $em->getRepository('SystemBundle:User');
$user = $rep->findOneBy(array("email"=>$mail,"pass"=>$pass));
if($user){
$id = $user->getId();
$type = $user->getType();
$session = new Session();
$session->start();
$session->set('id',$id);
$session->set('type',$type);
if($type == "admin"){
return $this->redirectToRoute('admin_homepage');
}
elseif ($type == "dis"){
return $this->redirectToRoute('dis_homepage');
}
elseif ($type == "comp"){
return $this->redirectToRoute('company_homepage');
}
}
else{
return new Response('not found where mail: '.$mail);
}
}
}
代码有问题吗? 请帮忙..
答案 0 :(得分:0)
正如@JimL所说,
你不应该开始新的会话,因为Symfony会为你处理这个问题。您 可以使用$ session = $ request-> getSession();
获取它
这很重要,例如,如果您使用了一个使用会话的侦听器,然后您想使用Symfony表单(间接检查会话是否已启动)。