我希望我的网站有一个管理页面,只有我才能访问firestore数据库并进行不同的读写。
目前在我的项目中,我正在使用云功能,但我不明白如何设置它,以便只有一个用户(我(可以从index.js.访问一些云功能
目前看起来是这样的:
const functions = require('firebase-functions');
// Import and initialize the Firebase Admin SDK.
const admin = require('firebase-admin');
admin.initializeApp();
exports.getProfile = functions.https.onCall(async(data, context) => {
...
}
getProfile应该是一个任何人都可以访问的云功能,但除此之外,我希望其他读/写功能只能由一个用户,管理员,我访问。
我应该为管理端创建另一个项目吗?哪个会有自己的index.js用于云功能?
其中只有我可以访问firestore数据库
-
编写firebase云firestore规则如下:
允许读取:if request.auth.uid="您的用户uid";;允许写入:if request.auth.uid="您的用户uid";;
只有一个用户(我(可以从index.js.访问一些云功能
getProfile应该是任何都可以访问的云函数
这些都是矛盾的,但我猜你只允许一个云功能对公众开放,而其他一切只能对你开放。您可以使用cloud函数中的上下文参数来访问请求的用户uid,就像这样并限制访问:
if (context.auth.uid === "your-user-uid"){
runFunction();
return {
error: false,
msg: "Function run was successful."
}
}
else{
return {
error: true,
msg: "You do not have admin privilege to access this cloud function."
}
}
您可以在firebase控制台中设置firestore规则,并引用一些只有您才能访问的特定信息。
创建一个新的firebase项目并不是最好的解决方案。
例如在firestore中,您可以设置规则,只允许用户读取和写入特定数据。而你可以允许管理员读写。
一旦你设置了一个firebase auth用户,你就会得到一个uid,这可以用来引用firestore规则中的管理员