Php 如何在symfony的hattermous部分中查看授权用户

Php 如何在symfony的hattermous部分中查看授权用户,php,symfony,Php,Symfony,我和symfony的项目有点小问题 我正在开发一个文章网站,普通访问者可以看到所有的文章没有登录和管理员可以登录和添加或删除文章,但管理员可以删除的评论,被标记为垃圾邮件在文章页面登录后。问题是,我已经允许匿名在文章部分(主控制器)若我在管理区登录,会话仍会在主控制器中显示匿名用户。?为什么? firewalls: admin_login: pattern: ^/admin/login$ security: false main_area:(a

我和symfony的项目有点小问题

我正在开发一个文章网站,普通访问者可以看到所有的文章没有登录和管理员可以登录和添加或删除文章,但管理员可以删除的评论,被标记为垃圾邮件在文章页面登录后。问题是,我已经允许匿名在文章部分(主控制器)若我在管理区登录,会话仍会在主控制器中显示匿名用户。?为什么?

 firewalls:
    admin_login:
        pattern:  ^/admin/login$
        security: false
    main_area:(article area)
        pattern: ^/main
        anonymous: ~

    adminrestricted_area:
        pattern: ^/
        form_login:
            csrf_provider: form.csrf_provider
            login_path: _admin_login
            check_path: _admin_login_check
        logout:
            path:   _admin_logout
            target: _admin_login
只有在url中包含
/admin
的页面才会显示当前登录的用户,但我想在
/main
中访问该用户,但在会话中它会显示我

我错过什么了吗


我希望,如果登录,它应该向我显示已登录的用户,如果我没有登录,则通常不需要登录即可访问此页面?

在Symfony中,您可以在
security.yml
配置中定义许多区域。 但每个区域都是分开的。您可以在一个区域进行身份验证,但不能在另一个区域进行身份验证

在您的情况下,您的用户在<代码> Admin登录> /代码>区域中被认证,但在MiNeStave中不被认证,因此SCOFONY认为您是匿名用户。

如果你需要你的管理员可以连接到“公共区域”,那么你需要定义一个区域,并使用访问控制。大概是这样的:

firewalls:
    main:
        pattern: ^/
        form_login:
            csrf_provider: form.csrf_provider
            login_path: _admin_login
            check_path: _admin_login_check
        logout:
            path:   _admin_logout
            target: _admin_login
        anonymous: ~

access_control:
    - { path: ^/admin/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: ^/admin/, role: ROLE_ADMIN }
    - { path: ^/, role: IS_AUTHENTICATED_ANONYMOUSLY }

为了完成您的回答,最好还添加一个对的引用,这在需要使用同一登录访问点对多个防火墙的用户进行身份验证时非常有用。@Yann您知道这方面的情况吗..我不知道,对不起。但我同意你在这篇帖子上的评论。我不知道你为什么有这种奇怪的行为。