Security Symfony 2具有安全上下文的anon访问
我正在从事一个项目,其中路径/视频/下的url应该可以匿名访问和登录。如果用户登录,他们应该会看到一些附加元素,例如表单。然而,如果我允许匿名访问,我就不会得到安全上下文,也无法检查用户是否经过身份验证以显示额外的元素 这是我尝试过的两种配置变体:Security Symfony 2具有安全上下文的anon访问,security,symfony,authentication,authorization,Security,Symfony,Authentication,Authorization,我正在从事一个项目,其中路径/视频/下的url应该可以匿名访问和登录。如果用户登录,他们应该会看到一些附加元素,例如表单。然而,如果我允许匿名访问,我就不会得到安全上下文,也无法检查用户是否经过身份验证以显示额外的元素 这是我尝试过的两种配置变体: firewalls: dev: pattern: ^/(_(profiler|wdt)|css|images|js)/ security: false login: pattern:
firewalls:
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
login:
pattern: ^/user/login$
security: false
secured_area:
pattern: ^/
form_login:
check_path: _security_check
login_path: /user/login
logout:
path: _user_logout
target: _user_login
#anonymous: ~
#http_basic:
# realm: "Secured Demo Area"
access_control:
- { path: ^/video/, roles: IS_AUTHENTICATED_ANONYMOUSLY }
但是,在这种情况下,您需要登录,在另一种情况下,我无法获取安全上下文来检查用户是否登录:
firewalls:
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
login:
pattern: ^/user/login$
security: false
video:
pattern: ^/video/
anonymous: ~
secured_area:
pattern: ^/
form_login:
check_path: _security_check
login_path: /user/login
logout:
path: _user_logout
target: _user_login
#anonymous: ~
#http_basic:
# realm: "Secured Demo Area"
access_control:
- { path: ^/video/, roles: IS_AUTHENTICATED_ANONYMOUSLY }
我该如何着手完成这件简单的事情 第二种解决方案几乎是正确的。只需共享“视频”和“安全区域”防火墙的上下文即可。这将为它们提供相同的上下文值,即:
video:
path: ^/video/
anonymous: ~
context: foobar #this is the line in question
secured_area:
....#same as what you wrote
context: foobar
通过这种方式,如果您登录,在安全区域,会话将在视频防火墙中可访问。如果用户试图以匿名方式访问^/video/也需要登录您可以与app.user联系