在基本模板 base.html.twig 中,我编写此代码
{% if app.user %}
<a href="{{ path('logout') }}">Logout</a>
{% else %}
<a href="{{ path('register') }}">register</a> |
<a href="{{ path('login') }}">Login</a>
{% endif %}
登录后在/ profile我看到菜单中的Logout链接 但 在/(和其他页面)我看到菜单中的注册和登录链接
security:
...
providers:
administartors:
entity: { class: DotArtBundle:User, property: username }
firewalls:
profile:
pattern: ^/profile
http_basic: ~
anonymous: ~
form_login:
check_path: /profile/login_action
login_path: /login
use_forward: false
username_parameter: _username
password_parameter: _password
logout:
path: /profile/logout
target: /
invalidate_session: false
login:
pattern: ^/login
security: false
access_control:
- { path: ^/login, roles: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/profile, roles: ROLE_USER }
- { path: ^/profile/admin, roles: ROLE_ADMIN }
我如何解决这个问题?
解决方案:
我将pattern: ^/profile
更改为pattern: ^/
答案 0 :(得分:2)
在侧面提示,根据登录/退出检查。使用is_granted对于将来的更新应该更加可靠。
{% if is_granted('IS_AUTHENTICATED_REMEMBERED') %}
<a href="{{ path('logout') }}">Logout</a>
{% else %}
<a href="{{ path('register') }}">register</a> |
<a href="{{ path('login') }}">Login</a>
{% endif %}