具有匿名用户的自定义身份验证提供程序

custom authentication provider with anonymous user

我有一个问题我没有真正找到答案。

我必须维护一个使用自定义身份验证和用户提供程序的 Symfony 应用程序。提供者按方面工作,用户可以正确登录。

但是,我需要为匿名用户提供一些可访问的路由。当用户未完全通过身份验证时,它们也应该是可访问的。 所以我尝试调整 security.yml 中的 access_control 配置以使这些 URL 可访问:

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

    main:
        pattern: ~
        anonymous: ~
        internal_api:
            provider:        fos_userbundle
            check_path:      /api/user/login

        logout:
            path:   /api/user/logout

access_control:
    - { path: ^/api/init, roles: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: ^/api/resources, roles: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: ^/, roles: ROLE_USER }

不幸的是,这不起作用。用户仍然不能访问这些路由,只要他们没有完全认证。

所以我的问题是:通过自定义身份验证提供程序提供角色 IS_AUTHENTICATED_ANONYMOUSLY 需要什么?可以完成还是我只需要调整我的 security.yml 设置?

此致

因为您希望匿名访问的路由在您的 main 防火墙后面并受到 path: ^/ access_control 的保护,您必须为它们创建一个特定的防火墙。

将此添加到您的 security.yml 的 firewalls 中:

api_resources:
    pattern: ^/api/resources
    anonymous: ~

api_init: 
    pattern: ^/api/init
    anonymous: ~

它应该有效。