Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Security Symfony 2具有安全上下文的anon访问_Security_Symfony_Authentication_Authorization - Fatal编程技术网

Security Symfony 2具有安全上下文的anon访问

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:

我正在从事一个项目,其中路径/视频/下的url应该可以匿名访问和登录。如果用户登录,他们应该会看到一些附加元素,例如表单。然而,如果我允许匿名访问,我就不会得到安全上下文,也无法检查用户是否经过身份验证以显示额外的元素

这是我尝试过的两种配置变体:

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联系