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

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

<分区>

我想弄清楚是否可以从调用 firebase https 云函数的客户端检查 auth 对象以完成以下任务:

1) 只允许具有已验证电子邮件的授权用户调用 https 端点,否则返回 403。

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

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

我能想到的唯一解决方法是将此逻辑更改为数据库触发器,即客户端写入数据库 void/characters/uid Node (数据库规则执行整个验证)然后函数监听此更改数据库,处理数据并将其推送到 characters/uid

但这意味着需要额外的逻辑,比如在完成后删除 Node ,而且我不确定如何将错误或成功响应发送回客户端,因为对于 https 函数我们可以 res.send(200 ) 或发回错误。

最佳答案

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

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

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

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

将只允许经过身份验证的用户具有与出现在路径上的相同的 uid 在那里写入数据。

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

关于javascript - 如何在 https 云功能中检查身份验证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42983006/

相关文章:

javascript - 如何从具有相同属性名称的对象设置多个类属性?

javascript - Polymer:firebase DB 不使用 firebase-element 更新

android - 区分 iOS 和 Android Firebase 身份验证用户

ios - 如果满足 swift 条件,则显示 fcm 通知

javascript - 为什么我没有收到警告 "a promise was created in a handler but was not returned from it"?

javascript - 如何从具有多个源文件的 gulp 任务一次返回所有流?

javascript - 如何在javascript字符串中显示下划线?

javascript - 优化内容较多的 HTML 页面

使用改写/插入键的 JavaScript 最大长度验证

javascript - 当在Electron中使用时,的page.evaluate()总是返回空对象