Security Symfony,将防火墙配置为向经过身份验证和匿名的用户授予访问权限
如何配置安全性防火墙和访问控制,以便所有页面为匿名用户提供有限的信息(注意:不强制登录),但显示经过身份验证的用户的完整详细信息Security Symfony,将防火墙配置为向经过身份验证和匿名的用户授予访问权限,security,symfony,Security,Symfony,如何配置安全性防火墙和访问控制,以便所有页面为匿名用户提供有限的信息(注意:不强制登录),但显示经过身份验证的用户的完整详细信息 encoders: Symfony\Component\Security\Core\User\User: plaintext role_hierarchy: ROLE_AGENT: ROLE_USER providers: agent_provider: memory: users:
encoders:
Symfony\Component\Security\Core\User\User: plaintext
role_hierarchy:
ROLE_AGENT: ROLE_USER
providers:
agent_provider:
memory:
users:
agent: { password: agentpass, roles: [ 'ROLE_AGENT' ] }
user_provider:
memory:
users:
user: { password: userpass, roles: [ 'ROLE_USER' ] }
firewalls:
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
anonymous: true
agent_area:
provider: agent_provider
pattern: ^/agent
anonymous: ~
form_login:
login_path: agent_login
check_path: agent_login_check
default_target_path: /agent
logout:
path: agent_logout
target: /agent
user_area:
provider: user_provider
pattern: ^/
anonymous: ~
form_login:
login_path: app_login
check_path: app_login_check
default_target_path: /
logout:
path: app_logout
target: /
access_control:
- { path: ^/agent/login, roles: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/agent, roles: ROLE_AGENT }
- { path: ^/login, roles: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/, roles: ROLE_USER }
如果删除了访问控制中的最后两行,则登录过程似乎按预期工作,但即使用户登录,被授予(“角色用户”)也始终返回false
- { path: ^/login, roles: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/, roles: ROLE_USER }
您可以使用twig的is_grated()函数向用户和来宾显示不同的内容
{% if is_granted('IS_AUTHENTICATED_ANONYMOUSLY') %}
{# ... only non logged-in users content ... #}
{% endif %}
。。。或者
{% if is_granted('ROLE_USER') %}
{# .. user's content ... #}
{% endif %}
这实际上是两个问题。我回答了上面的问题,询问如何为不同的用户角色呈现不同的/扩展的内容。。。