如何让API路由无需登录即可访问?security.yml配置异常排查
问题解决方法
问题出在access_control规则的匹配顺序——Symfony会按从上到下的顺序匹配第一条符合的规则,你的配置里^/(匹配所有路径)在^/api规则之前,所以/api/search.json会先命中^/对应的ROLE_USER要求,导致跳转登录。
修正后的配置需调整规则顺序,让更具体的^/api规则排在^/前面:
access_control: - { path: ^/login, roles: IS_AUTHENTICATED_ANONYMOUSLY } - { path: ^/api/getDays, roles: IS_AUTHENTICATED_ANONYMOUSLY } # - { path: ^/admin, roles: ROLE_ADMIN } - { path: ^/api, roles: PUBLIC_ACCESS } - { path: ^/, roles: ROLE_USER }
额外注意两点:
- 确保
PUBLIC_ACCESS角色已在系统中正确定义,对应权限配置生效 - 由于
/api/getDays需要保持匿名访问,它的规则要放在^/api规则前面,遵循"更具体路径优先匹配"的原则
内容的提问来源于stack exchange,提问作者Volatil3
相关产品推荐
相关产品推荐

