2012-04-27 9 views
1

"User"という名前のバンドルを作成しました。一般的なルーティングでは、すべてのUserBundle URLに/ userを追加しました。たとえば、UserBundleでルート/リストを定義すると、実際のパスはhttp://myapp.loc/user/listになります。symfony2のセキュリティ

私はこれやって、このウェブサイトを使用するためにログインするユーザーを強制しようとしている:

InvalidConfigurationException:無効な私はこのようなエラーを取得しています

security: 
     firewalls: 
      login_firewall: 
       pattern: ^/user/login 
       anonymous: ~ 
      secured_area: 
       pattern: ^/ 
       form_login: 
        login_path: user_login 
        check_path: user_login_check 
        default_target_path:/
       logout: 
        path: /user_logout 
        target: user_login 
       remember_me: 
        key:  atipics-soft2012 
        lifetime: 3600   
     access_control: 
      - { path: ^/, roles: ROLE_USER } 
     providers: 
      users: 
       entity: { class: MyApp\UserBundle\Entity\User, property:email } 
     encoders: 
      MyApp\UserBundle\Entity\User: { algorithm: sha512, iterations: 10 } 

をパスの設定 "security.firewalls.secured_area":ログインメソッド "form_login"のcheck_path "user_login_check" がファイアウォールパターン "^ /"と一致しません。

何が問題なのですか?

私はこのルートをroutesファイルに追加しました。

+0

アクセスコントロールからログインページを除外する必要があります。そうしないと、ログインしていないユーザーはログインページにアクセスすることができなくなります。 – Sgoettschkes

+0

あなたは正しいですが、私はすでにそれを試しました。ポイントは、アプリケーション全体を確保することです。あなたはいくつかの方法を知っていますか? – Bernat

+0

あなたのaccess_controllリストに '' - {path:^/user_login、roles:IS_AUTHENTICATED_ANONYMOUSLY} ''を追加してみてください。 – Sgoettschkes

答えて

1

これはバグかこのように意図されているかわかりませんが、check_pathはルート名を受け入れません。それをパスに設定する必要があります。

+0

OK。私は、コードは今動作します、 '私はその行を追加しました: - {パス:^/user/*、roles:ROLE_USER}、access_control。要点は:ウェブサイト全体をROLE_USERで保護するにはどうすればいいですか? これは機能しません - {path:^/*、roles:ROLE_USER} – Bernat

+0

'{path:^ /、roles:ROLE_USER}'は動作するはずです。 –

+0

ログインするまではうまくいくようです。次に、正しいpswを入力すると、私は/ _wdt/4f9a7bc6ddc40にリダイレクトされます...どんな考えですか? :S – Bernat