0

私は symfony と twig を初めて使用し、セキュリティ、ファイアウォール、およびテンプレートに頭を悩ませています。

私がやろうとしているのは、トップバーを表示する「ベース」テンプレートを用意することです。ユーザーがログインしていない場合はこのトップバーに「あなたはログインしていません」と表示され、ユーザーがログインしている場合は「Welcome user U」というメッセージが表示されます。これは私が入れたので

{% if is_granted('IS_AUTHENTICATED_FULLY') %}

ログに記録されたユーザーと匿名ユーザーを区別するために「基本」テンプレートに含まれていますが、セキュリティ コンテキスト トークンに関して問題があります。

私の公開パス(ファイアウォールで保護されていない)は次のとおりです。

/myapp/ 
/myapp/home 
/myapp/about 
/myapp/help

その後、認証されたユーザーにのみアクセスできるアクションのパスがいくつかあります。

/myapp/action1
/myapp/action2
...
/myapp/actionN

問題は、ユーザーが「ベース」にログインすると、アクション1、...、アクションNのビューにウェルカムメッセージが表示されるが、ユーザーが「ホーム」または「ヘルプ」ページに移動すると、メッセージは「ログに記録されていません」の"。

いくつかは同様の状況を持っていますか? どのように解決しましたか?ルーターとセキュリティ ファイルはどのように構成されていますか?

4

1 に答える 1

2

ファイアウォールはセキュリティ コンテキストを共有しません。そのため、アクションがファイアウォールの背後にない場合、ユーザー情報にアクセスできません。アプリ全体をファイアウォールの背後に配置してみてください (匿名ユーザーを許可してください)。

firewalls:
    secured_area:
        pattern: ^/
        anonymous: ~
        form_login:
            check_path: /login_check
            login_path: /login
        logout:
            path:   /logout
            target: /
access_control:
    - { path: ^/login, roles: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: ^/action, roles: ROLE_USER }

匿名ユーザーが login_path にアクセスできることを確認してください。

于 2011-09-27T07:14:29.063 に答える