Koledzy mam problem z logowaniem w symfony2.
zrobiłem prostą metodę logującą w kontrolerze:
public function checkAction()
{
$request = $this->getRequest();
$session = $request->getSession();
$login = $request->request->get('login');
$haslo = $request->request->get('haslo');
if($login && $haslo){
$em = $this->getDoctrine()->getManager();
$query = $em->createQuery('SELECT a FROM CmsAdminBundle:Admin a WHERE a.login = :login AND a.haslo = :haslo');
$query->setParameters(array( ));
try{
$admin = $query->getSingleResult();
} catch (\Doctrine\Orm\NoResultException $e){
$admin = null;
}
if($admin){
$user = new \Symfony\Component\Security\Core\User\User
($admin->getLogin(), $admin->getHaslo(), array('ROLE_ADMIN')); $token = new \Symfony\Component\Security\Core\Authentication\Token\UsernamePasswordToken($user, null, 'secured_area_admin', $user->getRoles());
$this->container->get('security.context')->setToken($token);
$session->set('_secured_area_admin', serialize($token));
$this->get('session')->getFlashBag()->add('good', 'jest taki user');
} else {
$this->get('session')->getFlashBag()->add('error', 'Nie ma takiego usera');
}
} else {
$this->get('session')->getFlashBag()->add('error', 'podaj login i hasło');
}
return $this->render('CmsAdminBundle:Default:login.html.php', array('options' => $this->options)); }
Po jej wykonaniu wszystko jest OK. Na belce developera mam info, ze jestem zalogowany i posiadam "ROLE_ADMIN".
Niestety po przejściu na inną podstronę (nawet wyswietlenie z powrotem formu logującego) powoduje, że otrzymama rola znika. I do zabezpieczonych podstron znowu musz się logować.
Ktoś wie co robie żle?