2013-02-11 10 views
7

私はSymfony 2.0のセキュリティを見ていて、私は説明できない問題があります。認証:ホームページの代わりにapp_dev.php/_wdt/511509b611682

私のセキュリティバンドルは今のところとてもシンプルです。

私は実際のプロバイダを配置する前にすべての作業を実行しようとします。

私はサイトに行くと、期待通りに私をログインフォームに送ります。私はユーザーとパスワードを入れてから、ホームページの代わりに "/.../app_dev.php/_wdt/511509b611682"(毎回違う番号)に送っています。

私のユーザーは、デバッグツールバーで認証済みとマークされていません。

私はURLの最後を離れると、私はホームページに到着します。私のユーザーは、デバッグツールバーで識別され、認証されたようです。

これは開発環境にのみ到着します。プロダクト環境では、期待どおりに動作するようです。あなたの助けのための

おかげ

+0

それはディープリンクを意味するのでしょうか?または単にルートパスですか?ページを再配置するためのブラウザキャッシュはありますか?ログイン後、どのページにどのように転送するのですか?あなたの「シンプルな」バンドルはどのようにログインを処理しますか? – Fusselchen

+0

「私がサイトに行ったとき」は、ルートURLを入力することを意味します。 BorwsercacheとSymfonyのキャッシュが消去されます。最初に入力したページに行きたいと思います。私のバンドルは、カスタムuserProviderとauthenticationProviderの軽い実装で、クックブックに表示されています(まだサービスは呼び出されていません。ありがとう。 – fatbob

+0

これは、devモードでのルーティングが何かをコピーしている(多分copy'n'pasteエラー)か、トークンの処理に問題があると思われます。 – Fusselchen

答えて

4

開発環境を使用してユーザーをログインすると、あなたがindex_dev.php/_wdt/4e95412bc6871にリダイレクトされます。

別名Webデバッグツールバーは、実はそれは、SecurityBundleに関連していないとにかく、あなたがこのラインを置くことができる。またhttps://github.com/FriendsOfSymfony/FOSUserBundle/issues/368

+0

これはうまくいくようです。 – fatbob

2

ここに文書化されて

dev: 
    pattern: ^/(_(profiler|wdt)|css|images|js)/ 
    security: false 

を経由して、ファイアウォールの範囲から除外することができWDT in access_control:

{ path: ^/_wdt, role: IS_AUTHENTICATED_ANONYMOUSLY } 
{ path: ^/_profiler, role: IS_AUTHENTICATED_ANONYMOUSLY } 

しかし、私は自分のアプリケーションルートだけのために私のaccess_controlを保持することをお勧めします。

15

さらに、@のartworkadの答えに、あなたはそれ以外の場合は一致しません、メインのファイアウォールの前にdevファイアウォールを追加する必要があります。「私は現場に行くと、」

security: 
    firewalls: 
     dev: 
      pattern: ^/(_(profiler|wdt)|css|images|js)/ 
      security: false 
     main: 
      pattern: ^/ 
      #... 
関連する問題