如何在https云功能中检查身份验证?

时间:2017-03-23 17:28:49

标签: javascript node.js firebase firebase-realtime-database google-cloud-functions

我试图找出是否可以从客户端检查auth对象,该对象调用firebase https云功能来执行以下任务:

1)仅允许经过验证的电子邮件呼叫https端点的authed用户,否则返回403。

2)以某种方式访问​​调用函数的客户端的uid,以便在数据库中设置characters/:uid之类的节点。

原因是禁止重复的字符。我可以在req.body中手动传递uid,但这意味着任何人都可以通过发送任何类型的uid作为req.body有效负载来摆弄这个并创建100个不同的角色。

只能解决这个问题,因为这会将此逻辑更改为数据库触发器,即客户端写入数据库void/characters/uid节点(数据库规则执行此整个验证)然后函数侦听数据库中的此更改,处理数据和将其推送到characters/uid

但是这意味着需要在完成后删除节点等额外的逻辑,而且我不知道如何将错误或成功响应发送回客户端,就像https函数一样,我们可以res.send(200)或发回错误。

1 个答案:

答案 0 :(得分:2)

如果我理解这一点,我认为这可以通过firebase规则来完成。

https://firebase.google.com/docs/reference/security/database/#location

在提供的示例中,规则如下:

".write": "auth.uid === $user"

只允许具有与路径上显示的uid相同的已验证用户在其中写入数据。

我不确定是否返回了403。这意味着您正在使用firebase身份验证,covered in some depth here,具体取决于您用于身份验证的机制。