2017-05-18 75 views
0

我想創建白名單ips,可以連接到我的api。 嘗試使用Expression Language Component
但是當我嘗試添加規則以security.yml位置附近有意外字符「@」

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

我有一個錯誤:

SyntaxError in Lexer.php line 90: Unexpected character "@" around position 25 for expression request.getClientIp() in @=service('app.white_list_manager').getWhiteList().

我怎樣才能解決呢?
Symfony的版本3.0.9

+0

你確定它甚至可以在security.yml配置中使用ExpressionLanguage嗎?不僅在屬性中,作爲配置器的參數和作爲調用的參數(方法調用)。在這裏 - > http://symfony.com/doc/current/service_container/expression_language.html –

+0

我使用這個問題的答案 http://stackoverflow.com/questions/29316277/symfony2-how-to-restrict-deny -access-to-certain-routes-by-ip-address – Richard

+0

是的,儘管它被標記爲幾個答案,但它甚至沒有幫助原始海報提出了內核監聽器解決的問題.. –

回答

0

一種解決方法是:

簡單定義監聽一個監聽器kernel.request,注入你"@app.white_list_manager""@request_stack"

然後檢查您的路線,並檢查白名單管理器中的IP,並採取相應措施。 (重定向,拒絕訪問,不管)