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'); )); 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); $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'); } }
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?