我有一组Firebase函数,可用作应用程序的API。
这些Firebase功能使用管理员权限连接到数据库:
const serviceAccount = require(`./config/xxx-firebase-adminsdk.json`);
admin.initializeApp({
credential: admin.credential.cert(serviceAccount),
databaseURL: DATABASE_URL,
});
我能够创建自定义令牌,并且我在服务器中接收/解码它但我无法使用安全规则,因为Firebase功能已通过管理员权限进行身份验证。
在访问数据库时,是否存在冒充凭据或传递其他用户的方法?
答案 0 :(得分:3)
您可以使用documentation:
中所述的用户级权限初始化admin SDKadmin.initializeApp({
credential: admin.credential.cert(serviceAccount),
databaseURL: "https://databaseName.firebaseio.com",
databaseAuthVariableOverride: {
uid: "the-user-id"
}
}, "some-other-name");
"一些-其他名称"如果您已经初始化了默认实例,则需要。有关详细信息,请参阅initializeApp()。
您显然必须知道经过身份验证的用户的UID才能使其正常工作。此外,应该清楚的是,每次要对不同的用户执行某些操作时都必须初始化SDK,这意味着您必须在UID可能不同的每个函数调用上执行init。