问题描述
Hasura 建议开发人员使用无服务器函数作为事件触发器。事件触发器的工作方式是,当发出事件时,将调用特定的无服务器函数。然而,即使 Hasura 处理身份验证和授权,无服务器功能也没有。
我的解决方案是:
有没有想过哪一个是最好的?我个人认为第二个最好,但不知道能不能做到。
解决方法
我会推荐以下组合:
您可以检查 supersecret
标头是否存在并检查该值作为身份验证的一种方式。另请参阅 IP,它是我的 Hasura 云项目的 IP 地址。这里我使用 Pipedream 作为端点进行测试。
如果我理解正确的话,您的解决方案可以解决不同的问题。
从无服务器功能验证用户(使用给定的会话 从 Hasura 发送的变量)。
如果您想验证导致事件触发的用户的身份,最好使用操作。你可以secure actions easily in console。
限制对无服务器功能的访问(只有 Hasura API 可以访问)。 像 cors 之类的东西。
如果您想限制对无服务器功能的访问,您有多种选择,具体取决于您的提供商。您的选择包括:
-
添加一些特殊的标头并验证每个函数中的 ,如 this answer
- 这是最简单的解决方案,但相当乏味。至少使用某种中间件来避免代码重复
-
将函数隐藏在代理后面,这将执行验证
-
如果可以,请为您的函数指定允许的主机列表(您的 hasura 实例在其中运行)