将 Firebase 功能仅限于注册用户

问题描述 投票:0回答:1

我有一个 v2 firebase 可调用函数:

import { onCall } from "firebase-functions/v2/https";

/// Simple ping to test authentication
exports.ping = onCall(async (req) => {
    return { pong: true };
});

因为它是一个可调用函数,所以需要身份验证。我已经验证这是否按预期工作:如果我在没有 Authorization 标头的情况下调用该函数,我会收到 401 Unauthorized。如果我使用有效的授权不记名令牌调用它,我会成功返回

{pong: true}

但是我的授权令牌是否适用于我的应用程序的用户似乎并不重要。我想仅限我的应用程序的注册用户访问此可调用函数。目前,我在

https://console.firebase.google.com/project/XXX/authentication/users

还没有注册用户

firebase console users

尽管如此,只要我有 google 用户的有效令牌,我仍然能够成功调用 ping。调用前后用户控制台都是空的,但是调用成功了。

如何限制 v2 firebase 可调用函数只能由用户控制台中列出的用户使用?

node.js firebase google-cloud-functions
1个回答
0
投票

身份验证信息会自动传递到可调用云函数,但“不会”自动强制执行。因此,您的 Cloud Functions 代码仍然需要检查用户是否已登录,如有关编写和部署可调用函数的文档中所述和所示。从那里:

request

参数包含从客户端应用程序传递的数据以及其他上下文(例如身份验证状态)。例如,对于将文本消息保存到实时数据库的可调用函数,数据可以包含消息文本以及 auth 中的身份验证信息:

// Message text passed from the client.
const text = request.data.text;
// Authentication / user information is automatically added to the request.
const uid = request.auth.uid;
const name = request.auth.token.name || null;
const picture = request.auth.token.picture || null;
const email = request.auth.token.email || null;

因此,您需要检查 
request.auth

是否具有值,或与您的用例相关的任何其他授权检查。

    

© www.soinside.com 2019 - 2024. All rights reserved.