对于客户端项目,我正在创建一个简单的混合应用程序,它提供非常简单的功能,但流量很高.该应用程序通常不需要后端,因为它非常简单,而firebase似乎是该项目的完美解决方案.
我坚持的唯一部分是使用Firebase进行短信验证/身份验证.然而,经过一些激烈的谷歌搜索和文档阅读后,我逐渐意识到,没有简单的方法可以做到这一点.这是我到目前为止所研究的内容:
通常使用混合移动应用程序,它们的非本地特性或JS API应该受到指责,但这是第一次(对我来说至少),感觉并非如此.我认为此时Firebase不是一个有效的选项,但是在开始研究AWS并为客户端设置整个后端之前,最后一次询问社区中有爱心和关心的成员.
有没有其他方法来处理这种类型的身份验证减去中间服务/没有后端服务器?有人有使用这些解决方案的经验吗?
更新:2017年5月
电话验证和身份验证现已在Firebase中本机提供.请参阅下面的我自己发布的答案.
更新:2017年4月
Firebase现在原生支持云功能.现在,您可以使用云功能实现此功能,而无需设置任何服务器.
更新:2017年10月
Fabric.io和Firebase 在Firebase手机认证中合作并集成了Digits,并为Fabric推出了更多功能.
在这里,我正在开发另一个客户端项目,该项目需要无后端.我想使用Firebase,因为它可以满足我们所需的一切,事实上我们已经构建了大部分的微型网站.
我们不想要求我们的用户输入电子邮件,因为我们认为它放弃了太多可识别的信息.相反,我们所做的是@users.ourdomain.com在注册和登录时分配电子邮件,如果用户不想提供他们自己的电子邮件地址并保持或多或少的匿名,但仍然可以在需要时再次访问该网站及其数据.微型网站是一次性体验(如果你展示你的朋友,可能是两次),没有人会在一年内忘记密码回来,所以这与这种情况无关.
我已经意识到没有办法完全保护这个createUserWithEmailAndPassword功能,因为任何人都可以发送垃圾邮件并创建大量帐户并使用所有用户名或电子邮件.有没有办法合并一个类似验证码的系统,而没有为Firebase实现单独的后端/令牌验证?
我现在能想到的唯一解决方案就是启动AWS Lambda来处理Captcha和Tokening.但是,当然任何能够消除后端必要性的解决方案都更为可取.有没有其他人之前遇到过类似的问题?如果是这样,你最终是如何解决它的?
非常感谢你的时间,快乐的编码.
在Firebase存储安全规则(非实时数据库)中,有没有办法检查路径中是否存在另一个对象,还是存在另一个对象的元数据?
一些背景
目前我的存储安全规则已设置,以便用户只具有读访问权限,而不能对其/users/{userId}/路径进行写访问.
我有一个管理云功能,可以保存文件/users/{userId}/necessary-file.pdf.我不希望用户能够修改或编写此文件,只希望云功能有权使用.为了实现这一点,我想我可以匹配文件名,如:
match /users/{userId}/{fileName} {
allow write: if !fileName.matches("necessary-file.pdf")
}
Run Code Online (Sandbox Code Playgroud)
题
有没有办法让我只允许用户编写some-other-file.pdf,如果他们已经在同一路径上有一个必要的file.pdf(如果更好的话,甚至可以在其他地方).同时仍然不允许他们写必要的文件.pdf.
那么有什么方法可以让我做这样的伪代码吗?:
match /users/{userId}/{fileName} {
allow read: if request.auth.uid == userId;
allow write: if (!fileName.matches("necessary-file.pdf")) && ("necessary-file.pdf".exists())
}
Run Code Online (Sandbox Code Playgroud)
作为替代方案,我可以让我的云函数将一个元数据写入必要的文件.pdf并检查它.有什么方法可以执行像这样的伪代码吗?:
allow write: if "necessary-file.pdf".metadata['canUserWrite'] == 'yesUserCan'
Run Code Online (Sandbox Code Playgroud)
最后
真正酷的是,如果这可以以任何方式远程实现,它可以用于以不那么实时的方式在firebase数据库和firebase存储规则之间进行通信.(这里提到这个问题)云功能可以监听实时数据库中预期字段的变化,并将文件写入firebase存储,firebase存储可以检查.