【问题标题】:Is there any way to give access to particular node to some user without authentication?有什么方法可以让某些用户无需身份验证即可访问特定节点?
【发布时间】:2021-02-10 07:24:56
【问题描述】:

我的 firebase 数据库如下所示:

假设我有 50 个用户,我想将节点 code-1 的访问权限授予用户 1-20,code-2 授予用户 21-40,code-3 授予用户 41-50。我有一些问题,我不想使用firebase authentication。有什么办法吗?比如从用户向firebase发送数据,然后完成Realtime database rules section的签入,然后授予权限。

【问题讨论】:

  • 你有什么方法可以识别用户,例如知道他们是从 1 到 20 吗?
  • 当用户登录(not firebase auth)他们输入一个代码[code-1或code-2或code-3],我可以在应用程序中识别它们。但是如何在授予访问权限之前将 entered code by user 发送到 firebase?

标签: android firebase firebase-realtime-database


【解决方案1】:

想到两个选项:

  1. 通过默默无闻的安全:将code-1 重命名为c17357345db9 之类的难以猜测的名称,并将code-2 重命名为64af7b679319。然后分享一个链接,该链接可以让用户 1-20 访问 c17357345db9,然后将 64af7b679319 的不同链接分享给用户 21-40。

  2. 创建 API 服务器:不允许直接访问 RTDB,而是创建充当 REST API 的云函数,以根据用户 ID 检索数据。

两者都不是最佳选择,如果用户 3 愿意,他们可以轻松地与用户 30 共享访问权限。

【讨论】:

  • 我不想使用Firebase authentication。顺便问一下我在cloud function里面做什么?
  • 这两个选项都不需要 Firebase 身份验证。在 Cloud Function 中,您只需要拦截请求,对其进行验证,然后返回数据。
  • 但是我没有用户ID
  • 您不能在没有身份验证的情况下“授予权限”,甚至不能使用最低用户 ID。如果您想将特定节点的访问权限授予完全匿名的用户,以某种方式分组为 1-20、21-40 等,请使用选项 1。
  • 在我的应用中,用户第一次进入时输入code-1 或code-2 或code-3。我可以根据他们的输入[输入的代码]做些什么吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-12-21
  • 2021-10-15
  • 1970-01-01
  • 2021-07-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多