2016-01-20 101 views
0

我有一個用Shelf和Rpc apis編寫的飛鏢web服務應用程序。如何在鏢架-rpc服務器中獲取客戶端IP

我需要檢查我的api方法內的客戶端IP,但我不知道如何。

上下文方法不包含HttpRequest .contentInfo屬性。

更多的是,貨架上的Request對象也沒有包含它,所以中間件功能也沒用。

任何人都有關於如何解決這個問題的想法?

+0

只是關於上下文的問題。你想用客戶的IP地址做什麼?由於通過IP地址識別客戶端有時不是一個好主意。 – Pacane

+0

我正在編寫一個服務器應用程序,並且我想只在來自授權IP時才接受用戶請求。 –

回答

0

您可以使用貨架的中間件概念來做到這一點。您可以在這裏查看示例記錄器中間件:https://www.crossdart.info/p/shelf/0.6.5+2/src/handlers/logger.dart.html。使用記錄器的示例可以在此處找到:https://github.com/dart-lang/shelf

在中間件中,可以在請求對象(它擴展了消息)中找到IP地址。消息使您可以訪問包含IP地址的原始http頭。從那裏你可以決定你想如何處理一個無效的IP(拋出一個錯誤,返回一個包含錯誤的請求等)。

+0

也許這只是因爲我使用了cURL,但是當我在創建的Request對象中查看標題時,我看不到任何對源IP的引用。實際上,我只有User-Agent,Accept和Host。你能指出我可以在哪裏獲得請求者IP嗎? –

相關問題