2016-09-10 3 views
0

Gibt es eine Möglichkeit, die URL, die umgeleitet wurde, Login-URL erhalten?Silex Security Provider bekommen Referer URL von Login-Route

Hier ist der Kontext, so dass Sie wissen, warum ich diese Frage stelle. Ich beginne damit, den Code zu zeigen, den ich benutze. Dies ist, wie ich die Sicherheitsanbieter bin Registrierung:

$app->register(new Silex\Provider\SecurityServiceProvider(), array(
    'security.firewalls' => array(
     'client' => array(
      'pattern' => '^/(en|fr)/client', 
      'form' => array('login_path' => "/fr/login", 'check_path' => "/fr/client/login_check"), 
      'users' => function() use ($app) { 
       return new UserProvider($app['pdoqueries']); 
      }, 
      'logout' => array('logout_path' => '/logout', 'invalidate_session' => true), 
      ), 
     ) 
)); 

Hinweis hier, dass ich Englisch bin Sicherung und Französisch Urls (/ en/Client und/fr/Client). Ich habe keine Möglichkeit gefunden, dass login_path auf die richtige Login-URL mit der richtigen Ländereinstellung verweist, also schreibe ich sie in die französische URL fest.

Hier ist die Login-Route:

$app->get('/{_locale}/login', function(Request $request) use ($app, $arrConfig) { 
    $referer = $request->headers->get('referer'); 
    error_log(__FILE__ . ": " . __LINE__ . ": " . __FUNCTION__ ."  : " . var_export($referer, true)); 
    return $app['twig']->render('auth/form.twig', array(
     'error'   => $app['security.last_error']($request), 
     'last_username' => $app['session']->get('_security.last_username'), 
     'title'   => 'Login', 
     'assetsUrl'    => $arrConfig['assets_url'] 
    )); 
}) 
->bind('login'); 

Sie können sehen, dass ich schon versucht, die Referer aus den Request-Header zu erhalten. Es funktioniert leider nicht. Ich brauche einen Weg, um die URL zu erhalten, auf die der Benutzer zugreifen wollte, um das Gebietsschema daraus zu erhalten und den Login-Text in diesem Gebietsschema anzuzeigen. Diese Information muss irgendwo gespeichert werden, da der Benutzer nach erfolgreicher Anmeldung zu dieser URL weitergeleitet wird.

Dank

Antwort

0

Ich denke, dass Sie wirklich nach so etwas wie das, was du ist: https://stackoverflow.com/a/25651658/1741150

Aber falls ich falsch verstanden, hier einige Tipps auf den Referer:

Vielleicht ist der SilexSecurityProvider stellt diese Einstellung wie Symfony ein:

(Quelle: http://symfony.com/doc/current/security/form_login.html#using-the-referring-url)

Wenn nicht, können Sie immer noch versuchen, einen guten alten $_SERVER['HTTP_REFERER'], zu verwenden, aber denken Sie daran, dass nicht jeder Kunde setzt:

Die Adresse der Seite (falls vorhanden), die den User Agent auf die aktuelle Seite verwiesen hat. Dies wird vom Benutzeragenten festgelegt. Nicht alle Benutzeragenten werden festlegen, und einige bieten die Möglichkeit, HTTP_REFERER als eine -Funktion zu ändern. Kurz gesagt, es kann nicht wirklich vertraut werden.

http://php.net/manual/en/reserved.variables.server.php

Verwandte Themen