Symfony2 + Twig: использование шаблона как для аутентифицированного, так и для анонимного пользователя - PullRequest
0 голосов
/ 25 сентября 2011

Я новичок в Symfony и Twig, и у меня немного болит безопасность, брандмауэры и шаблоны.

То, что я пытаюсь сделать, это иметь «базовый» шаблон, который показывает верхнюю панель. Мне бы хотелось, чтобы на этой верхней панели отображалось сообщение «Вы не вошли в систему», если пользователь не вошел в систему, и сообщение «Добро пожаловать, пользователь U», если пользователь вошел в систему. Потому что это я положил

{% if is_granted('IS_AUTHENTICATED_FULLY') %}

в «базовом» шаблоне, чтобы различать зарегистрированных и анонимных пользователей, но у меня есть проблемы с токенами контекста безопасности.

Мои публичные пути (не защищенные брандмауэром):

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

и позже есть некоторые пути для действий, которые могут только получить доступ к аутентифицированным пользователям:

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

Проблема в том, что, как только пользователь вошел в мою «базу», отобразите приветственное сообщение в представлении action1, ..., actionN, но когда пользователь зашел на «домашнюю» или «справочную» страницу, сообщение «вы не авторизованы ".

У кого-нибудь похожая ситуация? как ты решил это? как настроены ваш роутер и файлы безопасности?

1 Ответ

2 голосов
/ 27 сентября 2011

Брандмауэр не разделяет контекст безопасности. Поэтому, когда действие не находится за брандмауэром, вы не можете получить доступ к информации пользователя. Попробуйте разместить все приложение за брандмауэром (и разрешить анонимным пользователям):

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 }

Убедитесь, что логин_путь может быть доступен для анонимных пользователей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...