请问是否有相关资料学习一个典型的多用户系统的权限管理的是如何架构的?

2019-10-22 13:53:40 +08:00
 felixin

在下最近在学习多用户系统的搭建,有几个问题想不到清晰明确的解决方案,也不知道在哪里可以找到相关的资料进行学习,特来求问:

  1. 一般如何在数据库中表达多用户的记录?是使用数据库自身的 user 机制来管理(每个用户创建一个 user ),还是用普通的 table 来表示用户( table 的每一行表示一个用户)?

  2. 对于使用数据库的 user 而言,使用数据库自身的策略(比如看到 postgres 有 table policies,mysql 应该也有类似的设置)做 row level 的权限设置有什么限制和缺点吗?

  3. 相应的,如果使用 table 来存储用户的话,是否意味着后台在接收到所有 user 请求时都必须首先检查相应的授权(是否有专门的机制做授权管理?),是否有通用的行业解决方案呢(比如 java 做后台应用,是否有相应的权限管理框架可用)?

谢谢。

2313 次点击
所在节点    数据库
18 条回复
qza1212
2019-10-22 13:57:39 +08:00
shiro
felixin
2019-10-22 13:59:50 +08:00
@qza1212 谢谢,没听说过这个,我去学习一下。
lspvic
2019-10-22 14:00:12 +08:00
keycloak
90d0n
2019-10-22 14:00:54 +08:00
相比 shiro 更推荐 spring security
lllllliu
2019-10-22 14:12:49 +08:00
RBAC ?
felixin
2019-10-22 14:19:04 +08:00
@lllllliu 查了这个词,就是这个意思! 根据用户角色对相应的数据库记录所权限控制
lllllliu
2019-10-22 14:23:04 +08:00
@felixin #6 昂,那你要把系统里的各个权限分出来的,对于到各个功能组,粒度要很细。
然后生成权限表。
然后有个一对多的用户对于权限表。每次用户登录之后后端生成角色权限,然后前端根据权限渲染菜单,如果都是后端渲染,后端 session 里可以存。然后 api 部分可以写个中间件,处理每个请求是否有权限。
基本的就是这样的,主要是要把模型做好。
lllllliu
2019-10-22 14:23:56 +08:00
再细致点可以划分出用户组,用户组对权限,用户对于用户组。
Ianchen
2019-10-22 14:41:52 +08:00
自己写 RBAC2
julyclyde
2019-10-22 18:05:33 +08:00
用户
角色
用户-角色表

权限
角色-权限表

需要授权访问的应用
应用-权限表
Vegetable
2019-10-22 18:24:46 +08:00
RBAC 的 R 是 Role,不是 User。

如果你说的多用户是像 V 站这样的系统,你和我都是 User,我们的 Role 是同样的( User ),livid 的 Role 是超级管理员( SU ),所以我们和他权限不同,根据不同的角色来区分权限的策略,就是 Role-Based Access Control。

你发了这个帖子,你可以将这个帖子下沉一天,livid 也可以,因为发帖人本人拥有下沉自己帖子的权限,livid 有下沉所有帖子的权限。但是我不可以沉你的帖子,因为这个帖子在数据库中关联了你这个用户。
也就是说,所有用户会出现在数据库的一张用户表中,所有帖子也保存在一张帖子表中,通过一个 user_id 字段来区分发帖人。

没错,应该有通用中间件来做权限验证。

建议去 github 上找一个论坛类开源项目学习一下。
Vegetable
2019-10-22 18:25:39 +08:00
saas 类的系统涉及到了不同组织之间的隔离,变化更多
mamahaha
2019-10-22 18:31:02 +08:00
原理倒是不难,想要做到高效+规范就难了
knight9
2019-10-22 20:37:42 +08:00
前几天用 spring boot+shiro 刚写了这个
felixin
2019-10-23 01:07:22 +08:00
感谢大家提供的名词,非常有用!按图索骥了解了很多,框架不一定局限于 java,node.js 也可以推荐
felixin
2019-10-23 01:09:20 +08:00
发现好多人收藏了这个主题,希望大家能多推荐一些 state of the art 的解决方案
pythongo
2019-10-23 09:06:26 +08:00
Role-Based Access Control. Second Edition.pdf
有这么一本书,虽然老点,但是理论知识还是可以的。
felixin
2019-10-23 22:33:07 +08:00
@pythongo 我去下来看看

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/611733

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX