我正在使用Firebase云函数,并创建了几个HTTP请求。为了验证用户身份,我使用admin sdk验证ID令牌。
const decoded = await admin.auth().verifyIdToken(`${tokenId}`);
是否有一种方法可以根据安全规则检查用户是否具有从云功能读取/写入的权限,而无需手动检查云功能中的相同规则?
ggazkfy81#
是否有一种方法可以根据安全规则检查用户是否具有从云功能读取/写入的权限,而无需手动检查云功能中的相同规则?1.云函数使用Firebase Admin Node.js SDK,因此它们以管理权限运行,完全绕过安全规则。1.云功能无法根据安全规则(RTDB、Firestore或云存储)检查给定用户的授权。结论:您需要在您的云函数中实现逻辑,以便模拟您的安全规则。注意Admin SDK提供了读取Security Rules代码的可能性(参见此处的文档和here),但是,同样,您需要实现检查**这些规则的业务逻辑,因此它在您的特定情况下不会带来任何帮助。
uhry853o2#
通过在初始化Admin SDK时设置databaseAuthVariableOverride,您实际上可以使云函数以调用它的用户身份访问实时数据库。有关此操作的完整详细信息,请参阅Firebase文档中关于从Admin SDK以有限权限访问数据库的内容。这个设置只适用于实时数据库,所以如果你切换到使用Firestore,你必须按照Renaud的回答去做。
databaseAuthVariableOverride
2条答案
按热度按时间ggazkfy81#
是否有一种方法可以根据安全规则检查用户是否具有从云功能读取/写入的权限,而无需手动检查云功能中的相同规则?
1.云函数使用Firebase Admin Node.js SDK,因此它们以管理权限运行,完全绕过安全规则。
1.云功能无法根据安全规则(RTDB、Firestore或云存储)检查给定用户的授权。
结论:您需要在您的云函数中实现逻辑,以便模拟您的安全规则。
注意Admin SDK提供了读取Security Rules代码的可能性(参见此处的文档和here),但是,同样,您需要实现检查**这些规则的业务逻辑,因此它在您的特定情况下不会带来任何帮助。
uhry853o2#
通过在初始化Admin SDK时设置
databaseAuthVariableOverride
,您实际上可以使云函数以调用它的用户身份访问实时数据库。有关此操作的完整详细信息,请参阅Firebase文档中关于从Admin SDK以有限权限访问数据库的内容。这个设置只适用于实时数据库,所以如果你切换到使用Firestore,你必须按照Renaud的回答去做。