我是symfony和twig的新手,我对安全性,防火墙和模板感到头疼。
我要做的是拥有一个显示顶部栏的“基础”模板。如果用户未登录,我希望此顶栏显示“您未登录”,如果用户已登录,则显示“欢迎用户U”消息。 因为我把它放了
{% if is_granted('IS_AUTHENTICATED_FULLY') %}
在“基础”模板中区分已登录用户和匿名用户,但我遇到安全上下文令牌问题。
我的公共路径(不受防火墙保护)是:
/myapp/
/myapp/home
/myapp/about
/myapp/help
以后有一些操作路径只能访问经过身份验证的用户:
/myapp/action1
/myapp/action2
...
/myapp/actionN
问题是,一旦用户登录我的“基地”在actions1,...,actionN的视图中显示欢迎消息,但当用户转到“主页”或“帮助”页面时,消息是“你”未登录“。
有些人有类似的情况吗?你是怎么解决的?你的路由器和安全文件是如何配置的?
答案 0 :(得分: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。