Symfony 2 redirecten authenticatie valt weg
Ben bezig met symfony en laat iemand 'vanuit een controller' inloggen (niet vanuit een form omdat het via een activatielink gebeurt). Ik wil na dit inloggen de gebruiker doorverwijzen naar zijn profielpagina alleen is het probleem dat hij dan niet meer 'authenticated' is. Bij het renderen van een twigtemplate staat het ook goed en bij new RedirectResponse gaat het ook goed alleen bij deze twee methoden wordt de url in de adresbalk niet aangepast.
In de profiler bar van symfony staat wel 'logged in as' correct alleen er staat dan 'authenticated' no.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
$user = $em->getRepository('TestBundle:Users')->findOneById($userId);
$token = new UsernamePasswordToken($user, null, 'main', $user->getRoles());
$this->get('security.token_storage')->setToken($token);
//Dit werkt niet. De gebruiker is dan niet meer authenticatied (de pagina wordt wel geladen)
return $this->redirect($this->generateUrl('profiel_pagina', array('user' => $user)));
//Dit werkt wel (na returnen) alleen wordt de url van de routing profiel_persoon niet overgenomen
$response = new RedirectResponse($this->router->generate('profiel_persoon', array('user'=>$user)));
//Dit werkt ook alleen net als bij redirectresponse wordt de url niet netjes getoond.
return $this->render('TestBundle:Html:\Profiel\Persoon\persoonprofiel.htm.twig',array('user' => $user));
?>
$user = $em->getRepository('TestBundle:Users')->findOneById($userId);
$token = new UsernamePasswordToken($user, null, 'main', $user->getRoles());
$this->get('security.token_storage')->setToken($token);
//Dit werkt niet. De gebruiker is dan niet meer authenticatied (de pagina wordt wel geladen)
return $this->redirect($this->generateUrl('profiel_pagina', array('user' => $user)));
//Dit werkt wel (na returnen) alleen wordt de url van de routing profiel_persoon niet overgenomen
$response = new RedirectResponse($this->router->generate('profiel_persoon', array('user'=>$user)));
//Dit werkt ook alleen net als bij redirectresponse wordt de url niet netjes getoond.
return $this->render('TestBundle:Html:\Profiel\Persoon\persoonprofiel.htm.twig',array('user' => $user));
?>
Heeft iemand enig idee waar dit door komt, of in ieder geval een aanwijzing kan geven waar ik het in moet zoeken?
Gewijzigd op 18/11/2015 11:19:44 door Ama saril
Uit je code lijkt t alsof je zelf iemand probeert in te loggen. Maak hier gebruik van het Symfony Security systeem. Zelf iemand in de code inloggen is heel ingewikkeld (en core team is al een jaar aan het bedenken om dit makkelijk te maken, maar dat is praktisch onmogelijk).
In de documentatie staat uitvoerig beschreven hoe je een inlog formulier maakt in Symfony: http://symfony.com/doc/current/cookbook/security/form_login_setup.html
Ook is er documentatie om de pagina waar een gebruiker naar geredirect wordt na het inloggen te veranderen: http://symfony.com/doc/current/cookbook/security/form_login.html#redirecting-after-success
Gewijzigd op 18/11/2015 15:41:30 door Wouter J
Gebruikers loggen op een extern systeem in en krijgen dan een token terug. (Het inloggen ligt dus ergens anders). Nadat ze bij dat systeem correct zijn ingelogd komen ze terug op mijn systeem en wil ik ze dus in 'symfony' inloggen. Ik heb dus voor deze case geen inlogformulier nodig.
Nadat ze dus terug naar mij gedirect worden wil ik ze 'inloggen' zeg maar.
Ik zal in ieder geval even naar die autologin bundle kijken misschien dat ik daar wat mee kan.