首页 > 解决方案 > 我可以将单个 URI 端点标记为匿名吗?

问题描述

我已经阅读了文档并遵循了这个类似的问题:

允许匿名访问 symfony 防火墙保护包中的特定 URL

使用 Symfony 4.1.4 我尝试了以下方法:

access_control:
  - { path: ^/rpi/service/application/quote/approve, roles: IS_AUTHENTICATED_ANONYMOUSLY}
  - { path: ^/rpi, roles: ROLE_USER }
  - { path: ^/erp, roles: ROLE_USER }

但是,当我以匿名身份访问第一个 URI 时,http_basic_ldap登录屏幕会提示我。有任何想法吗?

标签: symfonysymfony4symfony-security

解决方案


你需要

anonymous: true

在你的防火墙中,就像在默认配置 config/packages/security.yml 中一样:

security:
    # https://symfony.com/doc/current/security.html#where-do-users-come-from-user-providers
    providers:
        in_memory: { memory: ~ }
    firewalls:
        dev:
            pattern: ^/(_(profiler|wdt)|css|images|js)/
            security: false
        main:
            anonymous: true

匿名认证是指用户通过了认证,并且一个token,但它是一个匿名token。

如果您没有anonymous: true,AnonymousAuthenticationListener 将永远不会为您的防火墙运行,并且永远不会创建匿名令牌。


推荐阅读