请教一个权限系统设计的问题?

2016-11-15 10:10:13 +08:00
 blakefan

请教大家一个关于权限系统设计的问题,我们系统以后将会有直营店,加盟店,会员,供应商,员工 这么多的角色,这样的系统该如何设计呢?请高人指点一二,谢谢了

3654 次点击
所在节点    程序员
9 条回复
Felldeadbird
2016-11-15 10:22:44 +08:00
直营店,加盟店,会员,供应商,员工 单独做后台管理。
然后使用前后端分离。 统一请求一个后台后台,在后端再依据请求的账号去判断 对应的权限。这样可以减少很多重复的业务逻辑。当然,有时候适当的重复比在单一业务逻辑 添加各种 权限判断会更好。
写完才发现你说的是以后才有。那就是依据功能进行权限设计就行了。
fullStackDude
2016-11-15 11:17:27 +08:00
Table:
-organizations
-permissions
-roles
-users

然后你把直营店/加盟店/供应商分别作为 organization 的不同 type
然后 under each organization, 设立不同的 role ,比如说 admin/manager/user/customer/...
然后 map each role with different permissions ,可以用 wildercard 作为 permission check ,比如 VIEW${服务的名字}$ALL, VIEW${服务的名字}$SELF
然后给每个 actual 的 user assign role 就好了,我觉得这样比较 scalable....

关系的话
organizations >--organizations_roles--< roles
roles >--roles_users---< users
permission >---roles_permissions--< roles

How so?
klgd
2016-11-15 12:38:29 +08:00
都是哪些人会用这些权限?区分清楚人了,才好说权限
chaegumi
2016-11-15 13:14:56 +08:00
zhuf
2016-11-15 13:43:43 +08:00
跟我们现在做的系统差不多,每个子系统权限都是独立的,用户访问 api 通过 jwt 中的信息去判断是否有权限
mynameisny
2016-11-15 14:34:28 +08:00
@zhuf RESTFul 有一个问题想请教, RESTFul 风格的 API 通常要设计成无状态的,那么 JWT 是否需要持久化在服务器中(比如 Redis )。
既然是无状态的,那么 Server 端就不应该将 Token 保存到 Session 或数据库中,那么如何能保证一个用户在一段时间只能有一个 Token 是可用的?
c0rpse
2016-11-15 14:37:43 +08:00
搜索 RBAC
Ouyangan
2016-11-15 21:08:31 +08:00
通常就是 RBAC 模型进行拓展 ,不要脸做个广告 ,哈哈 , 看看我刚推送上去的代码? 里面有 powerdesigner 模型文件,完整的权限实现 .代码略渣凑合看看
https://git.oschina.net/ouyangan/hunt-admin
https://github.com/Ouyangan/hunt-admin
garrydzeng
2016-11-15 21:14:37 +08:00
@mynameisny 把某些信息加密(比如 RSA )后发给客户端当令牌,比如每次登录都有个登录时间之类的,判断是否有效就是判断令牌里保存的时间戳是不是晚于最近登录时间。另外无状态应该指的是会话状态由客户端负责维护而不是不保存状态。

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

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

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

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

© 2021 V2EX