如何配置Symfony中带UUID占位符的URL为公开访问?
正确配置方案
针对UUID格式的/users/{id}/confirm路径公开访问,正确的YAML配置如下:
- { path: ^/users/[0-9a-f]{8}-[0-9a-f]{4}-1[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}/confirm$, roles: PUBLIC_ACCESS }
或者更易读的多行格式:
- path: ^/users/[0-9a-f]{8}-[0-9a-f]{4}-1[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}/confirm$ roles: PUBLIC_ACCESS
之前配置失败的原因分析
语法错误(使用
{id})
多数权限配置框架不支持直接用{id}作为路径变量匹配,这类语法通常用于路由定义而非权限规则的正则匹配,直接写入会触发语法错误。加引号后404
若引号包裹的是^/users/{id}/confirm,框架依然无法识别{id}变量,匹配不到实际的UUID路径,导致404;如果是包裹正则但未修正格式,也会因为正则不生效导致匹配失败。YAML格式错误(转义
[)
YAML中不需要对[进行转义,额外添加的\会被解析为无效字符,破坏YAML结构,引发格式错误。另外正则末尾最好加上$,确保匹配完整路径,避免误匹配更长的URL。
内容的提问来源于stack exchange,提问作者Bogdan Dubyk
相关产品推荐
相关产品推荐

