【发布时间】:2019-05-20 18:21:29
【问题描述】:
当需要细粒度的访问控制时,使用 Appsync/Firebase 创建一个完全“无服务器”的应用程序是否是个好主意?
我尝试使用 Firebase 构建一个应用,然后使用 AppSync,感觉这些解决方案有点让我瘫痪,我开始认为我可能还在用“旧”的方式来解决问题,并且这就是让我瘫痪的原因,而不是工具。
我苦苦挣扎的地方是访问控制。 Firebase 有“Firebase 规则”,AppSync 有“VTL”(Apache Velocity 模板语言),两者都提供了相对较好的解决方案,“Firebase 规则”更简单、更简洁,但 VTL 更健壮,因为它基本上是一种编程语言。
问题是我试图根据权限的“集合/表”授予用户访问数据库上文档的权限。因此,每个用户在该“集合/表”中都有一个具有细粒度权限的文档,我需要阅读该文档以了解他是否有权访问他尝试读/写的资源。
使用 firebase 和 AppSync 我可以读取数据库,但两者都有其局限性:
- Firebase 规则有请求限制。如果用户 有多个“权限组”。
- AppSync 更灵活,但仍然有限,如果我要编写一些逻辑,我宁愿使用我选择的语言而不是 VTL。此外,我宁愿将代码放在本地项目中,也不愿仅在云端通过 GUI 访问。
所以,最后,感觉这两种解决方案都让我在它们之前拥有另一个层,以便做更复杂的事情,所以它可以是函数,也可以是整个应用程序。 但是,为什么我需要他们所有的 API? 在之前添加另一层 Appsync/Firebase 基本上迫使我重新实现 GraphQL/Firebases API,然后,为什么不使用其他工具构建它?
那么,我做错了吗?将应用部署在 AppEngine 或类似解决方案上会更好吗(从而失去功能的优势)?
注意:如果读了这么多还是不清楚,我很抱歉,英语是我的第一语言。
【问题讨论】:
标签: firebase aws-lambda google-cloud-functions serverless aws-appsync