权限管理部分的一些设计与想法

需求:公司需要设计一个可编辑的权限管理模块

最初的设计时用户、角色、URL资源,三层关系,在基类中进行过滤,用户一对多角色,角色一对多URL资源。

那么问题来了,对于界面和AJAX的URL返回值并不相同。

这时我在URL资源的表中加了一行ajax标示AJAX类型,同时引入了所属菜单,因为菜单的改动一般很少,所以直接在代码中定义,增加tinyint的type字段,来存储所属菜单。

之后,因为一些特殊的需求,在角色中又加入了TAG字段,在程序中可以单独申请验证登陆用户的所属角色是否拥有TAG标签,来进行一些复杂的权限验证。

这时基本的需求已经满足了,但是新的需求又来了,需要引入第三方管理员的概念,他们可以添加用户,并赋予用户第三方操作员的权限。

可是,第三方管理员又分不同的渠道,我们拿什么来区分一个第三方管理员应该管理哪些用户么?

我们这时给用户和渠道加上了对应关系,而且一个用户还可能对应多个渠道,瞬间就混乱了。

于是,我把加入渠道的影响分成了两部分。

首先是对原先权限管理的影响,然后是如何实现第三方管理员的部分。

原先的权限管理中,我对用户和角色都引入了type来标识是否是第三方用户,然后在角色分配的界面,可以怼第三方类型的用户分配渠道。

第三方管理员由我方人员手动配置。第三方管理员可以添加第三方用户,手动分配给他们一个或多个自己拥有的渠道。第三方管理员只能看到拥有和自己相同渠道的人的用户。
PS:如果一个操作员有两个渠道,但是这两个渠道分属两个人管理。这时岂不是要限制第三方管理员只能分配自己拥有的渠道给别人。
第三方管理员只能分配我方给定义好的角色类型,添加的用户自动是第三方用户属性。

就这样,我在原先基础的权限管理中,加入了反人类的渠道和第三方管理员的功能。


后续使用过程中还有一些问题,比如从开发环境到线上环境的同步,因为URL的定义都在数据库中,所以需要把数据导出,直接导入到线上数据库中。
然后这个权限管理系统的可扩展性不强,资源是基于URL定义的所以定位精度也是在URL级别的,不能对一个URL内部的展示做定位。临走前,我也删除了原来代码中所以对角色标签的使用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值