如何在 https 云功能中检查身份验证? [复制]

Posted

技术标签:

【中文标题】如何在 https 云功能中检查身份验证? [复制]【英文标题】:How to check auth in https cloud function? [duplicate] 【发布时间】:2017-08-16 10:02:18 【问题描述】:

我正在尝试确定是否可以从调用 firebase https 云功能的客户端检查身份验证对象以完成以下任务:

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

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

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

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

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

【问题讨论】:

【参考方案1】:

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

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

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

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

只允许经过身份验证且具有与路径上显示的相同 uid 的用户在此处写入数据。

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

【讨论】:

在这里使用规则确实是正确的答案,如果您确实想向端点添加授权,我们在 Github 上有一个示例github.com/firebase/functions-samples/tree/master/…

以上是关于如何在 https 云功能中检查身份验证? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

Firebase 云功能,具有对外部 api 的基本身份验证的获取请求

密码注册后 Firebase 云功能出现未经身份验证的错误

JSP 页面应如何检查身份验证

如何将文本发送到基本身份验证中的用户名和密码字段? [复制]

怎么检测身份证号码是不是正确

如何在云功能中的两个 Firebase 项目之间切换? [复制]