【问题标题】:How to make Redis data user specific?如何使 Redis 数据用户特定?
【发布时间】:2021-04-01 20:30:36
【问题描述】:

下面的简化代码是 Flask 中多用户平台的一部分。

r = redis.Redis(host='localhost', port=6379, db=0, password=None, socket_timeout=None)

def button_func():
    # some executions
    r.set(my_data, encodedNumpyData)
    return jsonify('success')

def another_func():
    r.get(my_data)
    # some execcutions
    return render_template('some.html')

如何确保从 redis db 存储和检索的这些数据是特定于用户的,并且不会在不同用户之间共享?

注意:我使用会话来处理用户

【问题讨论】:

  • 明确关键用户。
  • 有 n 个用户...我们如何使关键用户具体化?
  • 这样问:在密钥中加入n
  • 将用户名/用户 ID 添加到 my_data

标签: python flask session redis


【解决方案1】:

所以你可以做很多事情:

  1. 你可以使用redis提供的不同内存db。 Redis 支持 最多 16 个数据库。您可以将不同用户的密钥存储在不同的数据库中。 获取它们与各自的数据库连接。无法访问不同数据库中的数据,即如果您建立连接 到 DB 0,您无法从 DB 1 获取数据。
  2. 实施 Redis ACL - 如果您使用 Redis 版本 6+,您可以 利用使用 ACL(访问控制列表)的特性。你可以 为每个用户创建具有密码的用户并传递这些凭据 在进行 Redis 连接时。您甚至可以添加权限/命令 等给用户。因此,使用用户 ID 为密钥添加前缀,例如 userid:data,并创建有权访问具有各自前缀的密钥的用户。因此,任何用户都无法访问其他用户的数据。

【讨论】:

    猜你喜欢
    • 2020-11-13
    • 2015-07-11
    • 2020-11-27
    • 1970-01-01
    • 2017-05-01
    • 2014-04-19
    • 2017-12-05
    • 2020-09-24
    • 2021-11-11
    相关资源
    最近更新 更多