【问题标题】:Manage route in security.yml with access_control使用 access_control 管理 security.yml 中的路由
【发布时间】:2019-10-21 06:19:14
【问题描述】:

我想要:

/p/{name} ==> 在公共访问中
/profile ==> 在登录访问中

我在 security.yml

中做了这个
access_control:
    - { path: ^/[p]/* , role: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: ^/*, role: ROLE_CONNECT }

但是,当我浏览时:

/profile => 可公开访问 ==> KO
/p/name-here => 可公开访问 = => 好的

【问题讨论】:

  • 请格式化您的问题。 “K.O.”对我们来说不是错误消息。添加您的路由、完整的security.yml,以及转到/profile 时收到的错误消息。如果你还可以添加一个与你的 symfony 版本匹配的标签,那就完美了。
  • /profile 可以在公共场合访问,所以它 KO(不好)因为我只在用户登录时才想要这条路线
  • 这对我来说似乎很清楚,我认为作曲家使用 OK 表示成功,使用 KO 作为错误(KO 不正常)。此外,问题在此之前已明确说明。

标签: php symfony access-control


【解决方案1】:

我很确定^/[p]/* 将匹配以/p 开头的任何路径,并且您将它作为第一条规则,因此它首先匹配并允许访问。

方括号[] 定义了一组要匹配的字符,您只想匹配一个,因此不需要它们。 * 表示最后匹配零个或多个 / 字符,你知道在 p 之后会有一个 / 所以省略星号。路径是前缀,因此您无需担心路径的可变部分。

试试这个:

- { path: ^/p/, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/profile, role: ROLE_CONNECT }

【讨论】:

    猜你喜欢
    • 2016-05-01
    • 1970-01-01
    • 2018-10-31
    • 2023-04-04
    • 2017-12-13
    • 2014-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多