RBAC权限管理

        离开实验室出差到公司做项目期间,除了做报表的相关开发,另一块就是做整个系统的权限管理。也就是要给每个登录的用户授予一定的操作权限和访问资源的权限。在查询了资料后,最后决定采用基于角色的访问权限。
        基于角色的访问控制(Role-Based Access Control)作为传统访问控制(自主访问,强制访问)的有前景的代替受到广泛的关注。在RBAC中,权限与角色相关联,用户通过成为适当角色的成员而得到这些角色的权限。这就极大地简化了权限的管理。在一个组织中,角色是为了完成各种工作而创造,用户则依据它的责任和资格来被指派相应的角色,用户可以很容易地从一个角色被指派到另一个角色。角色可依新的需求和系统的合并而赋予新的权限,而权限也可根据需要而从某角色中回收。角色与角色的关系可以建立起来以囊括更广泛的客观情况。一句话总结:该模型的核心就是把权限的使用者,权限针对的对象和权限的内容分离开来。这样使得权限管理非常灵活和自由。这样就构成了“用户-角色-权限”的授权模型。
    在这种模型下,用户与角色之间,角色与权限之间一般是多对多的关系,基本如下:
                                                                                     
        在项目执行期间,注意的点主要是一个用户可以拥有多个角色,角色可以拥有多个权限。区分哪些模块对应哪些部门,每个页面的元素ID的访问控制。在角色方面,主要分为员工,经理,部长,副总。还有一些特定的角色,譬如项目管理员,采购管理员之类的,这些主要还是公司那边的要求。在与客户商量之后,鉴于模块与部门的关系非常紧密,所以采用的方案主要如下:
        用户的权限主要通过查找其对应的角色列表,把权限加权就等于该用户的权限。角色根据等级的不同,赋予特定的权限。用户访问资源的权限主要通过部门来控制,部门与模块一一对应,用户根据不同的部门进去系统的时候呈现出不同的页面元素。而角色的权限主要是针对模块中的一些功能进行控制,譬如该模块的增删改查等基本功能。用户的权限主要如下所示:
                                                                                   
其中通过部门来控制资源的访问,譬如进入页面需要显示不同的元素,访问不同的页面等,而通过角色来控制功能的访问,譬如页面中的增删改查是否可以使用。而整个权限管理的数据表之间的关系主要如下(在此不给出具体的数据表格式,仅以数据表名作为标识):
                                                        

        另外针对特定的角色,我们也可以赋予一些特殊的权限,然后让用户与该角色关联即可。利用RBAC模型,把原本复杂的权限关系一下子弄得清晰起来,虽然要多建几个关系表,但是管理起来的逻辑更加合理,数据表的冗余也减少了。而且根据各自系统的特性,可以进一步利用这种思想把访问权限和功能权限分开,使得权限的管理更加灵活。不过这样的设计还是有许多问题,在接下来的时间慢慢完善,在此记录一下,再接再厉。
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值