Symfony 我不知道';我不了解如何为索引页配置我的security.yml文件

Symfony 我不知道';我不了解如何为索引页配置我的security.yml文件,symfony,firewall,fosuserbundle,Symfony,Firewall,Fosuserbundle,我开发了我的symfony2网站,并获得了所需的认证(使用FOSUserBundle)。 现在,我决定为匿名访问者添加另外两个例外:索引页(“/”)和联系人表单(“/contact”) 当我修改security.yml时,这些文件会被破坏: 在我的twig联系人表单页面中,我所有的“{%if is_-grated(“is_-AUTHENTICATED_-membered”)%}”都不再工作了。我真的好像再也没有资格了 在我的小枝索引页面中,我也有同样的问题 这是我的保安。我知道它可能很琐碎,

我开发了我的symfony2网站,并获得了所需的认证(使用FOSUserBundle)。 现在,我决定为匿名访问者添加另外两个例外:索引页(“/”)和联系人表单(“/contact”)

当我修改security.yml时,这些文件会被破坏:

  • 在我的twig联系人表单页面中,我所有的“{%if is_-grated(“is_-AUTHENTICATED_-membered”)%}”都不再工作了。我真的好像再也没有资格了
  • 在我的小枝索引页面中,我也有同样的问题
这是我的保安。我知道它可能很琐碎,但我在文档中找不到它,在那里我可以获得更多关于security.yml文件“让我与身份验证会话保持连接”的信息。我尝试过的一切都不起作用

security:
    encoders:
        "FOS\UserBundle\Model\UserInterface": sha512

    role_hierarchy:
        ROLE_AUTHOR:            ROLE_USER
        ROLE_ADMIN:             [ROLE_USER, ROLE_AUTHOR]

    providers:
        fos_userbundle:
            id: fos_user.user_manager

    firewalls:
        dev:
            pattern:  ^/(_(profiler|wdt)|css|images|js)/
            security: false

        login:
            pattern:   ^/(login$|register|resetting)
            anonymous: true

        token:
            pattern:    ^/administration/create-user/confirmation-token/
            anonymous: true

        #this is where it fail....
        contact:
            pattern:    ^/contact$
            anonymous: true

        index:
            pattern:    ^/$
            anonymous: true


        # Main Firewall
        main:
            pattern: ^/+
            form_login:
                provider:    fos_userbundle
                remember_me: true
            remember_me:
                key:         %secret%
            anonymous:       false
            logout:          true
            #http_basic:
            #    realm: "Secured Demo Area"

    access_control:
        #- { path: ^/login, roles: IS_AUTHENTICATED_ANONYMOUSLY, requires_channel: https }
        #- { path: ^/_internal, roles: IS_AUTHENTICATED_ANONYMOUSLY, ip: 127.0.0.1 }
提前谢谢你

你做错了:)你只需要几个防火墙。不是每个url的每个防火墙

这样做:

firewalls:
    main:
        pattern:        ^/
        switch_user:    true
        anonymous:      ~
        form_login:
            provider:   fos_userbundle
            login_path: /login
        logout:
            path:       /logout
access_control:
    - { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: ^/, role: IS_AUTHENTICATED_ANONYMOUSLY, requires_channel: https }
接下来,将另一项添加到访问控制中。

您做错了:)您只需要有几个防火墙。不是每个url的每个防火墙

这样做:

firewalls:
    main:
        pattern:        ^/
        switch_user:    true
        anonymous:      ~
        form_login:
            provider:   fos_userbundle
            login_path: /login
        logout:
            path:       /logout
access_control:
    - { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: ^/, role: IS_AUTHENTICATED_ANONYMOUSLY, requires_channel: https }

接下来将另一项添加到访问控制中。

您必须将它们添加到
access\u control
,而不是为联系人和索引创建不同的防火墙,因为它们应该由与应用程序其余部分相同的防火墙来处理(
main
),它们的不同之处在于您想要修改哪些角色可以访问它们:

main:
    pattern:        ^/
    ...
access_control:
    - { path: ^/$, roles: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: ^/contact$, roles: IS_AUTHENTICATED_ANONYMOUSLY }
    #- { path: ^/login, roles: IS_AUTHENTICATED_ANONYMOUSLY, requires_channel: https }
    #- { path: ^/_internal, roles: IS_AUTHENTICATED_ANONYMOUSLY, ip: 127.0.0.1 }
编辑以澄清:
像您那样指定不同的防火墙,会将这些页面置于当前安全上下文之外,因此从firewall main登录不适用于这些防火墙。

您必须将它们添加到
访问控制中,而不是为联系人和索引创建不同的防火墙,由于它们应该由与应用程序其余部分相同的防火墙处理(
main
),它们的不同之处在于您希望修改哪些角色可以访问它们:

main:
    pattern:        ^/
    ...
access_control:
    - { path: ^/$, roles: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: ^/contact$, roles: IS_AUTHENTICATED_ANONYMOUSLY }
    #- { path: ^/login, roles: IS_AUTHENTICATED_ANONYMOUSLY, requires_channel: https }
    #- { path: ^/_internal, roles: IS_AUTHENTICATED_ANONYMOUSLY, ip: 127.0.0.1 }
编辑以澄清:
像您那样指定不同的防火墙,会将这些页面置于当前安全上下文之外,因此从firewall main登录不适用于这些防火墙。

好的,我尝试了一些东西,但所有内容都已损坏。我终于做到了,它成功了:contact:pattern:^/contact$form\u login:provider:fos\u userbundle记住我:真记住我:密钥:%secret%anonymous:真注销:trueDude你不懂这个符号防火墙。检查文档:还有security.yml参考资料好的,我试了一些东西,但所有东西都坏了。我终于做到了,它成功了:contact:pattern:^/contact$form\u login:provider:fos\u userbundle记住我:真记住我:密钥:%secret%anonymous:真注销:trueDude你不懂这个符号防火墙。检查文档:和security.yml参考号好的,很抱歉打扰您。我尝试了很多可能性。我还是不明白。这是我的security.yml:我得到了错误:“在呈现模板的过程中引发了一个异常(“安全上下文不包含身份验证令牌。一个可能的原因可能是没有为此URL配置防火墙。”)在::layout.html.twig的第33行。”这仅仅是因为我有“{%if is_grated(”我想是在我的模板中进行了“%”身份验证。它不仅适用于索引页,也适用于联系人页。很抱歉打扰你。我尝试了很多可能性。我还是不明白。这是我的security.yml:我得到了错误:“在呈现模板的过程中引发了一个异常(“安全上下文不包含身份验证令牌。一个可能的原因可能是没有为此URL配置防火墙。”)在::layout.html.twig的第33行。”这仅仅是因为我有“{%if is_grated(”我想是在我的模板中进行了“%”身份验证。它不仅适用于索引页面,也适用于联系人页面。我变得疯狂了