firebase - 仅允许具有特定自定义声明的用户调用 Firebase 函数
问题描述
我有这个为用户设置自定义声明的函数:
export const setUserClaims = functions.https.onRequest((req, res) => {
return admin.auth().setCustomUserClaims(req.body.uid, req.body.claims);
});
我只希望超级管理员用户可以使用此功能,即由{admin: true}
.
因此admin
,例如可以通过调用此函数为支持人员设置用户声明。
我一直在四处寻找,但我没有找到一个 100% 可靠且安全的明显答案。
我怎样才能做到这一点?
解决方案
您可以创建一个 HttpsCallable 云函数,这样它将自动从客户端获取经过身份验证的用户,并将其与其他信息一起放入 context.auth 对象。
该函数可以是这样的:
async function myFunctionImpl(params, context) {
if (!context.auth.token.admin) {
throw new HttpsError('permission-denied');
}
// function code
}
export const myFunction = functions.https.onCall(myFunctionImpl);
要调用它,您可以使用函数客户端。这是一个网络示例:
await firebase
.functions()
.httpsCallable("myFunction")({example: "hello"});
这样,如果您在客户端对用户进行身份验证,它会将身份验证传递给函数。
推荐阅读
- ajax - 按页面模板过滤 WordPress 中的 AJAX 搜索结果
- git - Git diff api 限制问题 | 天蓝色devops-rest-5.1
- pdf - VF 页面的 XSL FO 内联对齐
- android - Android 分页库 | 暂时停止加载更多数据
- python - 我的项目中没有名为“帐户”的应用程序,但 django 仍然抛出 django.db.migrations.exceptions.NodeNotFoundError
- build - 已解决 - 构建错误 -> ##[error]Solution not found using search pattern 'D:\a\1\s\**\*.sln'
- react-native-flatlist - React Native:在 Flatlist 中显示 JSON 数据
- python - 如何连接str并转换为dict
- javascript - 在同一个 JS 文件中分离 Ajax 调用
- c# - 实体框架:为什么我的属性是空的?