我有一个用 Shelf 和 Rpc api 编写的 dart Web 服务应用程序。
我需要在我的 api 方法中检查客户端 Ip,但我不知道如何。
上下文方法不包含 HttpRequest .contentInfo 属性。
此外,货架 Request 对象也不包含它,因此中间件功能也没有用。
有人对如何解决这个问题有想法吗?
我有一个用 Shelf 和 Rpc api 编写的 dart Web 服务应用程序。
我需要在我的 api 方法中检查客户端 Ip,但我不知道如何。
上下文方法不包含 HttpRequest .contentInfo 属性。
此外,货架 Request 对象也不包含它,因此中间件功能也没有用。
有人对如何解决这个问题有想法吗?
您可以通过使用货架的中间件概念来做到这一点。您可以在此处查看示例记录器中间件: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(抛出一个错误,返回一个错误的请求,等等)。