启用历史功能的 Pubnub 用户级访问控制

Pubnub user-level access control with History feature enabled

是否可以在启用历史记录的用户级别使用 Pubnub Access Manager?对于我的 Android 应用程序,我想将对某个频道的访问限制为仅位于某个位置(代表该频道的位置)2 英里以内的某些用户。但是,我想保持历史记录功能打开。

在 Pubnub API 参考中,"History: To access historical messages you must grant full read access at either the subscribe_key or channel level. When a user has the appropriate permissions they can access any data stored. If they do not have access a 403 will be returned by PAM." 而且我知道更一般的权限胜过更具体的权限(即,如果您在 subscribe_key 或频道级别授予访问权限,那么这会否决用户级别的权限)。

那么如果你想要用户级别的访问控制,你能不能不使用历史记录功能?

PubNub 访问管理器 - subscribe & history 需要 read 权限

要在频道上调用 history,用户必须具有 read 权限。 historysubscribe 没有单独的权限。此 read 权限提供了调用 subscribehistory.

的能力

你是对的,如果你在频道级别授予 read 权限(这意味着在授权中不包括 auth-key),那么任何人都可以调用 subscribehistory 在该频道上。

在子密钥级别授予 read(在没有通道或 auth-key 参数的情况下授予)将授予每个人在 [= 上调用 subscribehistory 的权限47=]任意频道.

所以您只需要在用户的 auth-key 上为频道授予 read 权限,他们就可以获取历史记录 - 他们也可以订阅.

如果您只是想让他们获取一次历史记录,然后就无法订阅,那么:

  1. 代表用户获取服务器调用历史记录,并根据从用户到服务器的 GET 将结果传回给用户。

- 或 -

  1. 授权用户 read 在用户的授权密钥上使用频道 1 分钟 ttl。这将使他们有足够的时间打电话给 history,而留给 subscribe.
  2. 的时间不多了

如果您根本不想让用户订阅,我会选择选项 1。