【发布时间】:2020-03-20 11:43:42
【问题描述】:
我的情况
我想使用 React 和 Postgres 创建我的第一个端到端 Web 应用程序。我之前在 Intranet 的工作中确实使用过 Postgres,并使用 Postgres 角色系统进行用户身份验证。
角色
我计划的网络应用程序将是一个团队规划系统。它将由以下用户角色组成:
- 网络管理员(我,超级用户)
- 团队管理员(可以在他/她的团队中插入/删除用户,全局设置 为团队应用功能设置等)
-
团队用户(可以调整存储在
数据库,例如颜色,自己的个人资料) - visitor(只能查看团队及其成员)
我的方法
我目前对用户身份验证和角色管理的计划是将上述角色作为 Postgres 组角色,并在每个组角色中,定位相应用户的登录角色。因此,用户身份验证将完全由 Postgres 的内置角色系统管理。
然后通过
应用不同的数据访问- 基于表和基于列的权限GRANTs 以及每个组角色的视图实现和
- row security policies 用于将数据子集到相应的团队 用户。
这是一个好方法吗?
【问题讨论】:
-
从数据库的角度来看,这种方法没有任何问题。
-
经过更多研究后,我不知道我是否应该 (1) 使用 postgres 的实际登录角色系统或 (2) 仅使用组角色并在不同模式中拥有一个用户表。此外,我发现连接池可能会成为我的方法的一个问题(如 @JGH 所述)
-
连接池是一个真正的问题。但是,如果您使用每个组的登录角色,它仍然是可行的。
-
实际上我发现这个(相当老的)thread 可能对我有帮助。看来有了这个我可以成功建立连接池
标签: postgresql authentication web-applications roles