如何检查https云function的身份validation?
我想弄清楚是否可以从客户端检查auth对象,调用firebase https云function来完成以下任务:
1)只允许validation过的电子邮件用户呼叫https端点,否则返回403。
2)以某种方式访问调用函数的客户端的uid,以便在数据库中设置节点像characters/:uid
。
原因是不允许重复的字符。 我可以在req.body中手动传递uid
,但这意味着任何人都可以摆弄这个,并通过发送任何types的uid作为req.body
载荷来创build100个不同的字符。
只有解决方法我可以想到这是改变这种逻辑到数据库触发器,即客户端写入数据库void/characters/uid
节点(数据库规则做这个整个validation),然后函数监听数据库中的这种变化,处理数据,并推动它characters/uid
但这意味着需要额外的逻辑,例如删除节点后,我不知道如何发回错误或成功的响应回到客户端,就像使用https函数,我们可以res.send(200)
或发回错误。
如果我明白这一点,我认为这可以通过firebase规则来完成。
https://firebase.google.com/docs/reference/security/database/#location
在提供的例子中,一条规则如下:
".write": "auth.uid === $user"
只允许通过authentication的用户使用与path上显示的相同的uid来在那里写入数据。
我不确定403是否返回。 这意味着您正在使用Firebase身份validation,这在这里有一些深入的介绍 ,具体取决于您用于身份validation的机制。
- child_changed事件firebase
- Javascript:将对象的对象转换为对象数组
- Firebase应用程序在localhost:5000 / / / app上运行
- 本地Firebase服务器节点会引发“Firebase.goOffline不是function”
- FireStore – TypeError:k.setTimeout不是一个函数
- Firebase HTTP云端函数.send()返回什么?
- Firebase 3 node.js服务器authentication是否会改变?
- Firebase的云端function – 移除最老的孩子
- Firebase:如何以编程方式为类似于`firebase.auth()。currentUser.getIdToken(false)`的特定用户生成一个jwt标记?