Symfony 2 redirecten authenticatie valt weg

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Ama saril

ama saril

18/11/2015 11:19:01
Quote Anchor link
Hallo php'ers,
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)
PHP script in nieuw venster Selecteer het PHP script
1
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));

?>


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
 
PHP hulp

PHP hulp

22/12/2024 07:20:19
 
DavY -

DavY -

18/11/2015 14:59:59
Quote Anchor link
Uitgaande van 'TestBundle' heb je dus je eigen bundle geschreven voor registreren, inloggen, etc? Misschien dat dit je op weg helpt: https://github.com/jmikola/AutoLogin (Bron
 
Wouter J

Wouter J

18/11/2015 15:39:39
Quote Anchor link
Je token is niet geauthenticate, alleen maar aangemaakt.

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
 
Ama saril

ama saril

18/11/2015 15:48:38
Quote Anchor link
Bedankt voor de reacties. De reden dat ik 'handmatig' iemand wil inloggen is de volgende:
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.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.