在使用functions.auth.user().onCreate(...)时,我们如何获取用户的IP地址?基本上,我希望跟踪用户访问我们网站时的IP地址,以及他们注册应用程序时的IP地址,以进行分析,除非有人知道更好的方法!谢谢。
functions.auth.user().onCreate(...)
ie3xauqp1#
这在任何云函数后台触发器中都是不可能的。如果要尝试记录IP地址(假定网络流量可以通过代理和VPN,这可能不是非常准确或有帮助),您必须使用HTTP类型的触发器,该触发器是从用户计算机或设备上运行的应用或网站调用的。请求 * 可能 *包括一个名为x-forwarded-for或fastly-client-ip的包含IP地址的头,但这没有文档记录,因此不能保证它会存在。另请参阅:How to get client IP address in a Firebase cloud function?
x-forwarded-for
fastly-client-ip
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中其他可用内容的更多详细信息和示例,请参见获取用户和上下文信息。
2条答案
按热度按时间ie3xauqp1#
这在任何云函数后台触发器中都是不可能的。如果要尝试记录IP地址(假定网络流量可以通过代理和VPN,这可能不是非常准确或有帮助),您必须使用HTTP类型的触发器,该触发器是从用户计算机或设备上运行的应用或网站调用的。请求 * 可能 *包括一个名为
x-forwarded-for
或fastly-client-ip
的包含IP地址的头,但这没有文档记录,因此不能保证它会存在。另请参阅:How to get client IP address in a Firebase cloud function?
5anewei62#
使用auth.user().beforeSignIn()和auth.user().beforeCreate()中的EventContext对象,可从Firebase身份验证获得IP信息
要使用它,您首先需要升级到Firebase Authentication with Identity Platform。它在Spark和Blaze计划中都可用,并且可以通过在项目中转到“Firebase Authentication -〉Settings”来启用。
文档给予了以下用例,用于根据来自auth.user().beforeSignIn()的IP进行获取、检查和阻止,例如:
有关EventContext中其他可用内容的更多详细信息和示例,请参见获取用户和上下文信息。