请教大家一个关于权限系统设计的问题,我们系统以后将会有直营店,加盟店,会员,供应商,员工 这么多的角色,这样的系统该如何设计呢?请高人指点一二,谢谢了
1
Felldeadbird 2016-11-15 10:22:44 +08:00
直营店,加盟店,会员,供应商,员工 单独做后台管理。
然后使用前后端分离。 统一请求一个后台后台,在后端再依据请求的账号去判断 对应的权限。这样可以减少很多重复的业务逻辑。当然,有时候适当的重复比在单一业务逻辑 添加各种 权限判断会更好。 写完才发现你说的是以后才有。那就是依据功能进行权限设计就行了。 |
2
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? |
3
klgd 2016-11-15 12:38:29 +08:00
都是哪些人会用这些权限?区分清楚人了,才好说权限
|
4
chaegumi 2016-11-15 13:14:56 +08:00
|
5
zhuf 2016-11-15 13:43:43 +08:00
跟我们现在做的系统差不多,每个子系统权限都是独立的,用户访问 api 通过 jwt 中的信息去判断是否有权限
|
6
mynameisny 2016-11-15 14:34:28 +08:00
@zhuf RESTFul 有一个问题想请教, RESTFul 风格的 API 通常要设计成无状态的,那么 JWT 是否需要持久化在服务器中(比如 Redis )。
既然是无状态的,那么 Server 端就不应该将 Token 保存到 Session 或数据库中,那么如何能保证一个用户在一段时间只能有一个 Token 是可用的? |
7
c0rpse 2016-11-15 14:37:43 +08:00 via Android
搜索 RBAC
|
8
Ouyangan 2016-11-15 21:08:31 +08:00
通常就是 RBAC 模型进行拓展 ,不要脸做个广告 ,哈哈 , 看看我刚推送上去的代码? 里面有 powerdesigner 模型文件,完整的权限实现 .代码略渣凑合看看
https://git.oschina.net/ouyangan/hunt-admin https://github.com/Ouyangan/hunt-admin |
9
garrydzeng 2016-11-15 21:14:37 +08:00
@mynameisny 把某些信息加密(比如 RSA )后发给客户端当令牌,比如每次登录都有个登录时间之类的,判断是否有效就是判断令牌里保存的时间戳是不是晚于最近登录时间。另外无状态应该指的是会话状态由客户端负责维护而不是不保存状态。
|