【问题标题】:Unexpected character "@" around position位置周围出现意外字符“@”
【发布时间】:2017-05-19 15:27:07
【问题描述】:

我想创建可以连接到我的 api 的白名单 ip。 尝试使用Expression Language Component
但是当我尝试向 security.yml 添加规则时

    - path: ^/v2/api
      allow_if: "request.getClientIp() in @=service('app.white_list_manager').getWhiteList()"

我有一个错误:

Lexer.php 第 90 行中的语法错误: @=service('app.white_list_manager').getWhiteList() 中表达式 request.getClientIp() 的位置 25 周围出现意外字符“@”。

我该如何解决?
Symfony 3.0.9 版

【问题讨论】:

  • 您确定甚至可以在 security.yml 配置中使用 ExpressionLanguage 吗?不仅在属性中,作为配置器的参数和作为调用(方法调用)的参数。就像这里 -> symfony.com/doc/current/service_container/…
  • 我使用这个问题的答案stackoverflow.com/questions/29316277/…
  • 是的,即使它被一些人标记为答案,它甚至没有帮助提出问题的原始海报..
  • 用内核监听器解决。感谢您的帮助

标签: php symfony


【解决方案1】:

一种解决方法是:

为了简单地定义一个监听kernel.request的监听器,注入你的"@app.white_list_manager""@request_stack"

然后查看你所在的路由,并在白名单管理器中查看ip,并采取相应措施。 (重定向、拒绝访问等)

【讨论】:

    猜你喜欢
    • 2019-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多