我试图找出是否可以从客户端检查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)
或发回错误。
答案 0 :(得分:2)
如果我理解这一点,我认为这可以通过firebase规则来完成。
https://firebase.google.com/docs/reference/security/database/#location
在提供的示例中,规则如下:
".write": "auth.uid === $user"
只允许具有与路径上显示的uid相同的已验证用户在其中写入数据。
我不确定是否返回了403。这意味着您正在使用firebase身份验证,covered in some depth here,具体取决于您用于身份验证的机制。