Chr*_*odz 2 firebase google-cloud-functions firebase-admin
我有这个功能可以为用户设置自定义声明:
export const setUserClaims = functions.https.onRequest((req, res) => {
return admin.auth().setCustomUserClaims(req.body.uid, req.body.claims);
});
Run Code Online (Sandbox Code Playgroud)
我只希望此功能可供超级管理员用户使用,即包含{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);
Run Code Online (Sandbox Code Playgroud)
要调用它,您可以使用函数客户端。这是一个网络示例:
await firebase
.functions()
.httpsCallable("myFunction")({example: "hello"});
Run Code Online (Sandbox Code Playgroud)
这样,如果您在客户端上对用户进行身份验证,它会将身份验证传递给该函数。
| 归档时间: |
|
| 查看次数: |
556 次 |
| 最近记录: |