【问题标题】:How to get the client IP inside a Route如何在路由中获取客户端 IP
【发布时间】:2020-09-27 10:08:27
【问题描述】:

我试图在 Iron Router 的路由过程中检索客户的 IP 地址。我有一个服务器端函数(getIP),但是路由内的“waitOn”函数不会等待服务器函数返回:

waitOn: function () {
        Meteor.call('getIP', function(error, clientIp){...}}

我可以强制它等待,还是可以通过其他方式获取 IP?

【问题讨论】:

    标签: meteor iron-router


    【解决方案1】:

    根据文档,waitOn 挂钩必须返回一个处理程序、一个函数或一个数组。它不适合您的原因是客户端上的 Meteor.call 始终是异步的,您必须定义一个回调函数,该函数在方法响应时调用。 鉴于这种性质,您只能使用 Meteor 方法,如果 waitOn 代码支持 Promise,则可以在方法回调中解决。

    我看到的唯一方法是:

    • 使用 Meteor.onConnection 挂钩,并将用户的当前 IP 地址存储在用户的配置文件中(Meteor.users 集合)
    • 设置发布整个用户配置文件的全局订阅(因为默认情况下 Meteor.user 仅发布几个默认文档字段)。
    • 在路由waitOn上,查询Meteor.user集合,你会看到当前检测到的那个用户的IP地址

    我希望这对您有所帮助。

    【讨论】:

      猜你喜欢
      • 2012-03-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-07
      • 2015-06-06
      • 2020-11-10
      • 2012-03-14
      相关资源
      最近更新 更多