我的app/config/security.yml
中有此参数
parameters:
sylius.security.api_regex: "^/api"
这与/api/v1/a/
,/api/custom/b/
等所有链接相匹配...
我想说特定的路线:/api/custom/some/info/
从比赛中删除。
我该怎么做?
答案 0 :(得分:1)
您的^/api(?!/api/custom/some/info/)
正则表达式与字符串开头的/api
匹配,然后如果匹配后跟/api/custom/some/info/
,则匹配失败。
您可以使用
对其进行修复^/api(?!/custom/some/info/)
请参见regex demo
详细信息
^
-字符串的开头/api
-文字子字符串... (?!/custom/some/info/)
-不立即跟随/custom/some/info/
。现在,如果最后一个斜杠是可选的,则可以在字符串末尾使用替代斜杠:
^/api(?!/custom/some/info(?:/|$))
^^^^^^^
答案 1 :(得分:1)
如果您在symfony中启用了防火墙,则只需设置访问控制,将此路径放在列表的顶部,并在其中允许一个角色,只有您一个。
app / config / security.yml
access_control:
#If route is matched matched, will block access to anyone not having ROLE_PRIVATE
- { path: ^/api/custom/some/info/, roles: [ROLE_PRIVATE] }
#Else if route is not matched, will allow access to everyone
- { path: ^/api, roles: [IS_AUTHENTICATED_ANONYMOUSLY] }