有关用户权限的控制,一般通用的做法是涉及到用户,角色,访问功能/资源这三者,它们之间的关系一直比较模糊,今天来总价一下;
用户是注册到系统中的用户,角色是有某些或全部权限的集合,访问功能/资源是角色可访问的功能或资源的集合,其中涉及到的表有:
1,user 表是保存注册到系统中的用户基本信息表;
2,role 表是保存角色基本信息的表;
3,role_user 表是保存某个角色中存在的用户,是个用户和角色关系表;
4,func 表是保存访问的功能或资源基本信息表;
5,role_func 表是保存某个角色下可以访问的功能或资源,是个角色和访问功能/资源的关系表;
各个表之间对应的关系如下:
func f <--f.refId = rf.funcId (1:N)--> role_func rf <--rf.roleId = r.refId (N:1)--> role r <--r.refId = ru.roleId (1:N)--> role_user ru <--ru.userId = u.refId (N:1)--> user u
查询某个用户可以访问哪些资源时,
可以通过用户ID 查 role_user 表,看该用户有哪些角色,得到角色ID,再通过查 role_func 表,得到角色对应可访问的功能或资源,最后列出[一般以菜单形式]该用户可以访问的功能或资源。
这里是权限管理的通用做法,仅供参考。