基于角色的访问控制(RBAC)的角色权限设计与注意事项。

设计:

RBAC基本概念

RBAC(Role-Based Access Control):基本理念是将“角色”这个概念赋予具体用户,在系统中用户与权限之间通过角色进行关联,以这样的方法来实现灵活配置。

用户与角色的关系:用户与角色是多对一或者多对多关系。一个用户对应一个角色。一个用户对应多个角色,最终权限取多个角色的并集。权限都是由角色控制的,给角色赋予权限,再将权限配置给用户,用户就具有了配置的权限。

用户组:可以对用户分组,将类似的用户(权限)分为一个组,对组进行权限配置。可避免新增权限后需要对所有单独用户配置新权限问题。可直接对用户组配置权限,这个用户组的用户就具有了这个权限。

权限组:和用户组一样,如果权限过多,需要给用户配置,可以将权限设置成为一个组。但是权限一般相对比较固定,数量不会太多。

角色继承:权限大的继承权限小的功能。例如学生管理系统中,校长角色具有老师角色的所有功能,校长继承老师的权限,并添加自己的权限,组成了校长的权限。老师继承了学生的权限。这就需要管理角色间的关系,通过关系来体现角色的层级关系。

管理角色间的关系:例如校长角色、老师角色、学生角色在一个学校情况下才可以继承权限。A校校长不可以查看B校学生的信息(不能继承B校老师的权限)。

角色隔离(限制):例如一个用户不可以又有老师角色,又有学生角色。需要隔离。还有,例如一个学校只可以有一个校长,这个校长角色只可以配置给一个用户。而且学校必须要有校长这个角色对应的用户,而且不可以删除,只可以修改用户,角色始终对应一个用户(学校校长这个用户)。

用户选择角色:特殊情况。例如校长和学生的界面不一样。但是校长也有学生的权限,需要选择校长登陆的时候的角色。如果校长想看学生界面,可能就需要选择。

权限的拆分:

产品权限分析:产品的权限一般分为:页面权限,控制权限,数据权限。页面权限就是决定哪些页面显示,那些页面不显示。控制权限决定增删改查。数据权限就是增删改查的具体数据。要注意的是,必须有页面权限才可以有相应的操作权限。对于后端来说:一个页面数据、每一个操作都最好使用独立的接口。对于前端来说:要保证因为权限而屏蔽掉一些页面或者操作,系统界面任然合理美观。

角色和权限关系配置:如果关系相对固定,例如校长有一个学校的所有权限,可直接在后端写死。如果角色的权限比较灵活,需要随时配置和调整,这需要前端页面进行配置。

设计和业务中关于权限的处理

设计开发中权限需要精确到增删改查,在业务配置中需要将多个权限合并起来(例如学生权限,就是学生的增删改查,但是设计的时候得将增删改查单独设计开)。

各个权限关系:页面权限需要在操作权限之前配置,操作权限需要在数据权限之前配置。或者说要包含。否则会出现有权限没有页面得情况。查看权限优先于增删改,必须查看才能增删改。

角色与权限关系:角色具有一些权限,例如增删改查。但是有限制,A校长只能增删改查本校学生的数据,这需要一些限制。

一些注意情况:需要设置初始角色,例如游客,或者超级管理员。在用户没有权限的url下要提示权限。

你可能感兴趣的:(语言,方法,数据库)