基于角色的权限管理系统设计思路

时间:2022-05-17 15:29:55

概述

权限管理功能是项目中重要的部分,通过权限系统可以控制系统中各用户所拥有的权限,比如能否打开一个页面,能否进行某项操作,合理的权限控制可以规避误操作的风险,提高系统的可用性。
权限管理的思路一般为基于角色和基于资源两种,基于角色即对为用户赋予某些角色的权限,基于资源则为对用户赋予某些资源的权限。两种既可以单独实现,也可结合起来使用。

设计思路

系统中抽象出操作、角色、用户三个概念,其中操作由项目中抽象出来,一个操作可以是一个URI,也可以是一个方法,比如创建用户的操作,删除用户的操作。角色是权限管理的核心,一个角色具有某些操作的权限,比如用户管理员,这个角色具有的权限有添加用户的权限、修改用户的权限、删除用户的权限。系统中的用户则被赋予若干个角色,比如如果有一个用户A被赋予了用户管理员的角色,那他就能添加、修改、删除用户。

表结构设计

使用MySQL和MongoDB都可以,MongoDB可以直接用数组保存用户所具有的角色
项目表

字段名 说明
id
token 密钥
name 项目名称
ctime 创建时间
mtime 修改时间

操作表,uri是唯一索引

字段名 说明
id
project_id 项目id
uri 操作的地址
name 操作名称
status 状态
ctime 创建时间
mtime 修改时间

角色表

字段名 说明
id
project_id 项目id
actions 具有权限的操作
status 状态
ctime 创建时间
mtime 修改时间

用户表
角色表

字段名 说明
id
project_id 项目
name 用户名
roles 所属的角色
status 状态
ctime 创建时间
mtime 修改时间