使用 AWS 无服务器后端为 React 应用程序动态分配用户权限
Dynamically assigning user permissions for a react app with an AWS serverless backend
对于上下文,我构建了一个笔记应用程序以及无服务器堆栈:https://serverless-stack.com
基本上我有一个笔记应用程序,它允许用户写笔记,然后在仪表板上看到他们写的所有笔记作为提要。该数据库是一个 DynamoDb table,它根据 userId 查询 return 将填充提要的所有注释的列表。
我想弄清楚的是如何动态分配哪些用户可以查看笔记。例如,该应用程序将有用户 A、B 和 C。用户 A 写了一条便条,然后他允许用户 C 查看但不允许用户 B。
实现此目标的最佳方法是什么?我已经查看了一些基于角色的访问控制选项,但我认为这在我正在尝试做的事情的上下文中不起作用,因为在那种情况下会有太多假设 "roles"处理所有可能的访问组合,尤其是随着用户数量的增长。
我的另一个想法是保留一个单独的 DynamoDb table 来存储笔记和可以看到它们的各种用户之间的关系。所以架构会是这样的:
noteId | userId | visibility
-------|--------|-----------
1 | A | Yes
-------|--------|-----------
1 | B | No
-------|--------|-----------
1 | C | Yes
并且必须更新对 return 可用笔记的查询以填充可见性设置为 true 的笔记。
这是管理用户权限的好方法吗?不确定此选项是否可以很好地扩展。
想出一个适合您所有用例的完整模型就太过分了。不过,还是希望能指点一下。
要在 Amazon DynamoDB 中建模数据,考虑访问模式是有意义的。他们可能是以下,也许更多:
- 获取特定用户拥有的所有笔记
- 获取特定用户可见的所有笔记
- 获取具体说明
鉴于这些模式,有多种方法可以使用 DynamoDB table 结合二级索引对数据进行建模。请查看以下链接以获取建模指导:
如何在 DynamoDB 中建模一对多关系:https://www.alexdebrie.com/posts/dynamodb-one-to-many/
在 DynamoDB 中建模多对多关系的最佳实践:https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/bp-adjacency-graphs.html
使用 DynamoDB 进行单Table 设计的内容、原因和时间:https://www.alexdebrie.com/posts/dynamodb-single-table/
对于上下文,我构建了一个笔记应用程序以及无服务器堆栈:https://serverless-stack.com
基本上我有一个笔记应用程序,它允许用户写笔记,然后在仪表板上看到他们写的所有笔记作为提要。该数据库是一个 DynamoDb table,它根据 userId 查询 return 将填充提要的所有注释的列表。
我想弄清楚的是如何动态分配哪些用户可以查看笔记。例如,该应用程序将有用户 A、B 和 C。用户 A 写了一条便条,然后他允许用户 C 查看但不允许用户 B。
实现此目标的最佳方法是什么?我已经查看了一些基于角色的访问控制选项,但我认为这在我正在尝试做的事情的上下文中不起作用,因为在那种情况下会有太多假设 "roles"处理所有可能的访问组合,尤其是随着用户数量的增长。
我的另一个想法是保留一个单独的 DynamoDb table 来存储笔记和可以看到它们的各种用户之间的关系。所以架构会是这样的:
noteId | userId | visibility
-------|--------|-----------
1 | A | Yes
-------|--------|-----------
1 | B | No
-------|--------|-----------
1 | C | Yes
并且必须更新对 return 可用笔记的查询以填充可见性设置为 true 的笔记。
这是管理用户权限的好方法吗?不确定此选项是否可以很好地扩展。
想出一个适合您所有用例的完整模型就太过分了。不过,还是希望能指点一下。
要在 Amazon DynamoDB 中建模数据,考虑访问模式是有意义的。他们可能是以下,也许更多:
- 获取特定用户拥有的所有笔记
- 获取特定用户可见的所有笔记
- 获取具体说明
鉴于这些模式,有多种方法可以使用 DynamoDB table 结合二级索引对数据进行建模。请查看以下链接以获取建模指导:
如何在 DynamoDB 中建模一对多关系:https://www.alexdebrie.com/posts/dynamodb-one-to-many/
在 DynamoDB 中建模多对多关系的最佳实践:https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/bp-adjacency-graphs.html
使用 DynamoDB 进行单Table 设计的内容、原因和时间:https://www.alexdebrie.com/posts/dynamodb-single-table/