从firebase身份验证触发器获取用户的IP地址?

i5desfxk  于 2023-01-14  发布在  其他
关注(0)|答案(2)|浏览(140)

在使用functions.auth.user().onCreate(...)时,我们如何获取用户的IP地址?基本上,我希望跟踪用户访问我们网站时的IP地址,以及他们注册应用程序时的IP地址,以进行分析,除非有人知道更好的方法!谢谢。

ie3xauqp

ie3xauqp1#

这在任何云函数后台触发器中都是不可能的。如果要尝试记录IP地址(假定网络流量可以通过代理和VPN,这可能不是非常准确或有帮助),您必须使用HTTP类型的触发器,该触发器是从用户计算机或设备上运行的应用或网站调用的。请求 * 可能 *包括一个名为x-forwarded-forfastly-client-ip的包含IP地址的头,但这没有文档记录,因此不能保证它会存在。
另请参阅:How to get client IP address in a Firebase cloud function?

5anewei6

5anewei62#

使用auth.user().beforeSignIn()和auth.user().beforeCreate()中的EventContext对象,可从Firebase身份验证获得IP信息
要使用它,您首先需要升级到Firebase Authentication with Identity Platform。它在Spark和Blaze计划中都可用,并且可以通过在项目中转到“Firebase Authentication -〉Settings”来启用。
文档给予了以下用例,用于根据来自auth.user().beforeSignIn()的IP进行获取、检查和阻止,例如:

exports.beforeSignIn = functions.auth.user().beforeSignIn((user, 
context) => {
  if (isSuspiciousIpAddress(context.ipAddress)) {
    throw new functions.auth.HttpsError(
      'permission-denied', 'Unauthorized access!');
  }
});

有关EventContext中其他可用内容的更多详细信息和示例,请参见获取用户和上下文信息。

相关问题