2016-09-10 15 views
0

ログインURLにリダイレクトされたURLを取得する方法はありますか?SilexセキュリティプロバイダがログインルートからReferer URLを取得しています

ここで私はなぜこの質問をしているのか分かります。私は使用しているコードを表示することから始めます。私は英語とフランス語のURL(/ EN /クライアントおよび/ FR /クライアント)を確保していますここで

$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), 
      ), 
     ) 
)); 

注意:これは私がセキュリティプロバイダを登録しています方法です。 login_pathが正しいロケールで正しいログインURLを指すようにする方法が見つからなかったので、私はそれをフランス語のURLにハードコーディングしています。

は今ここにログインルートです:

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

あなたは私が既にリクエストヘッダからのリファラを取得しようとしたことを見ることができます。残念ながらそれは働かない。 ユーザーがアクセスしようとしたURLを取得してそこからロケールを取得し、そのロケールにログインフォームのテキストを表示する方法が必要です。ログインが成功した後、ユーザーはそのURLにリダイレクトされるため、この情報はどこかに格納する必要があります。

おかげ

答えて

0

私は、あなたが本当に後にしているが、このようなものであることを考える:

多分SilexSecurityProvider:https://stackoverflow.com/a/25651658/1741150

しかし、場合には、私は誤解は、ここにリファラにいくつかのヒントですはsymfonyのようにこの設定を公開しません:

firewalls: 
    main: 
     # ... 
     form_login: 
      # ... 
      use_referer: true 

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

それは、あなたはまだ古き良き$_SERVER['HTTP_REFERER']を使用しようではなく、すべてのクライアントがそれを設定し、心に留めておくことができない場合は、次の

ページのアドレス(ユーザーエージェントを現在のページ に照会した場合)。これはユーザエージェントによって設定されます。すべてのユーザエージェントが に設定されているわけではなく、HTTP_REFERERを 機能として変更する機能もあります。要するに、それは本当に信頼できるものではありません。

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

関連する問題