【问题标题】:Symfony security placeholdersSymfony 安全占位符
【发布时间】:2014-11-04 07:48:02
【问题描述】:

我正在尝试找出是否有可能在 Symfony 的 security.yml 配置中使用占位符。

我有以下 security.yml:

order_area: pattern: ^/{_checkout}/ anonymous: ~ provider: ehv_customer security: true context: customer

我正在为多种语言构建结帐流程,但我不想使用一种标准语言来处理路由,例如/结帐/1,/结帐/2。结帐受 Symfony 防火墙保护,只允许客户登录。

有没有一种方法可以定义一个占位符来处理每种语言的安全防火墙路由。以下链接是该问题的另一个示例,但对我不起作用:Symfony-2 > login & logout routes with placeholders。我也可以使用前缀,但这是我最后的选择。

也许可以通过 PHP 而不是 YML 或 XML 添加防火墙规则?

Symfony 版本:2.5.3

【问题讨论】:

  • 我可能找到了解决这个问题的方法,方法是将整个网站置于防火墙之下,从而限制特定的 URL 以确保安全。但我目前不知道它是否会产生新的问题,因为我有其他可能与此冲突的防火墙规则:pattern: ^/.*pattern: ^/admin/

标签: php security symfony


【解决方案1】:

您可能需要阅读Symfony Localization 组件,该组件使用_locale 参数。它可能在 security.yml 模式中可用,但您必须进行测试才能确定。

【讨论】:

  • 不幸的是它只适用于路由而不是security.yml
  • 看起来模式匹配是你所能做的。也许你可以构造一个适合你需要的正则表达式。
  • 这对我也不起作用,因为 URL 以动态字符串开头。如果我的网址以前缀开头,我只能应用正则表达式。无论如何,谢谢。
【解决方案2】:

在我的评论中,我终于通过创建一个处理整个网站的防火墙规则来解决这个问题:

customer_area: pattern: ^/.* anonymous: ~ provider: ehv_customer security: true context: customer

应首先说明可能与此规则冲突的其他防火墙规则。为了处理登录/注销表单并限制网站的某些部分,我使用了控制器和 security.context 服务。

【讨论】:

    猜你喜欢
    • 2023-04-06
    • 1970-01-01
    • 2015-09-16
    • 1970-01-01
    • 2012-11-02
    • 1970-01-01
    • 2012-12-09
    • 2018-05-26
    • 2011-07-04
    相关资源
    最近更新 更多