使用 access_control 管理 security.yml 中的路线
Manage route in security.yml with access_control
我要:
/p/{name} ==> in public access
/profile ==> in loggin access
我在 security.yml
access_control:
- { path: ^/[p]/* , role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/*, role: ROLE_CONNECT }
但是,当我浏览时:
/profile => 可在 public 中访问 ==> K.O.
/p/name-here => 可在 public 访问 ==> OK
我很确定 ^/[p]/*
将匹配任何以 /p
开头的路径,并且您将其作为第一条规则,因此它首先匹配并允许访问。
方括号[]
定义了一组要匹配的字符,你只想匹配一个所以你不需要它们。 *
表示匹配末尾的零个或多个 /
个字符,你知道 p
之后会有一个 /
,所以省略星号。该路径是一个前缀,因此您无需担心路径的可变部分。
试试这个:
- { path: ^/p/, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/profile, role: ROLE_CONNECT }
我要:
/p/{name} ==> in public access
/profile ==> in loggin access
我在 security.yml
access_control:
- { path: ^/[p]/* , role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/*, role: ROLE_CONNECT }
但是,当我浏览时:
/profile => 可在 public 中访问 ==> K.O.
/p/name-here => 可在 public 访问 ==> OK
我很确定 ^/[p]/*
将匹配任何以 /p
开头的路径,并且您将其作为第一条规则,因此它首先匹配并允许访问。
方括号[]
定义了一组要匹配的字符,你只想匹配一个所以你不需要它们。 *
表示匹配末尾的零个或多个 /
个字符,你知道 p
之后会有一个 /
,所以省略星号。该路径是一个前缀,因此您无需担心路径的可变部分。
试试这个:
- { path: ^/p/, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/profile, role: ROLE_CONNECT }