4

保護されていないページで現在ログインしているユーザーを取得する方法は?

ファイアウォールで保護されている /account/ ページだけがあり、他のページは保護されていません。

私のグローバル ナビゲーションには、次のテンプレート (簡略化) があります。

{% if app.user %}
  <a href="/account/data">...
  <a href="/logout>...
{% else %}
  <a href="/account/login">....
{% endif %}

問題: ログアウト リンクのあるナビゲーションは、セキュリティで保護されていないページでもアクセスできるはずですが、UsernamePasswordToken がありません...そして symfony は /logout および /account/data リンクの代わりにログイン リンクを表示します。匿名リスナーを使用して他のすべてのページを構成しましたが、正しく機能しません。

それに対する解決策はありますか?

4

1 に答える 1

8

非ファイアウォール ページでユーザーを取得することはできません。アプリ全体のファイアウォールを有効にし、匿名アクセスを許可し、アプリの特定の部分を次のように保護しaccess_controlます。

security:
    firewalls:
        main:
            pattern: ^/
            anonymous: ~

    access_control:
        - { path: ^/protected, roles: ROLE_SOME }
于 2013-03-12T14:20:54.157 に答える