【问题标题】:How can I send the parameter with the firestore get method?如何使用 firestore get 方法发送参数?
【发布时间】:2020-06-12 11:41:49
【问题描述】:

我的项目正在使用 Firebase 创建一个网站,但它使用的是内部身份验证微服务而不是 Firebase 身份验证。
每次用户登录时,内部的authen服务都会生成一个token(我称之为client_id),并发送给客户端。
此令牌也存储在用户集合中。
请帮助我如何通过此client_id 为用户编写规则。
如果是写角色,我可以通过方法updatedeletecreate 发送client_id,然后通过 request.resource.data.cliend_id 并检查它。
但是如果它是读取角色,我没有任何方法可以通过 get 方法发送到 client_id 来验证用户
我什至想过用更新方法替换所有的get方法来传递client_id
但是update方法的响应只是update_time,不是我更新的对象

【问题讨论】:

  • @AlekseyRazbakov 可能是因为我传达的内容很混乱,所以你误解了。我已经建立了一个使用customToken通过Line登录的网站,所以我仍然需要使用Firebase Auth来生成idtoken。但是这次我没有使用Firebase Auth来生成idtoken,内部authen系统会生成token(就是client_id)并返回给客户端,这个token也存储在user集合中。
  • 如果没有其他办法,我只好重新使用firebase authen,但我正在努力寻找一个省力的解决方案

标签: firebase google-cloud-firestore firebase-authentication firebase-security


【解决方案1】:

Firebase RTDB 和 Firestore 规则仅使用自己的身份验证。在 Firebase 客户端库发送 uid 以及 jwt 令牌和其他安全参数的每个请求中。这些是 firebase 工作的基础,因此无法替代。

正如 Aleksey 所说,您可以尝试自定义身份验证。它仅针对此类用例专门定制。

【讨论】:

  • 我认为除了使用 firebase authen 之外没有其他方法可以对用户进行身份验证,非常感谢
【解决方案2】:

无法为限制读取操作的目的向安全规则提供额外数据。这根本不安全,因为客户端可以简单地在查询中伪造他们想要的任何内容。

您只能使用 request.auth 中可用的 Firebase 身份验证提供的信息、resource.data 中文档本身中的数据或 contents of other documents using get()。如果您想将其他数据附加到用户帐户,请考虑使用custom claims

【讨论】:

    猜你喜欢
    • 2020-04-16
    • 1970-01-01
    • 2020-04-27
    • 2018-07-18
    • 1970-01-01
    • 1970-01-01
    • 2018-10-19
    • 2020-08-24
    • 1970-01-01
    相关资源
    最近更新 更多