You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 02:48:10