两个关于权限设置的问题思考

最近这两天做动态菜单和权限校验,想到了两个有意思的问题。

第一个是对于一个用户的操作权限,无非就是这四个方面,增删改查。

如果通过字母来标识,可能就是增(I)删(D)改(U)查(S)

那么一个用户或者表所拥有的权限就可能有IS,IDUS,IDU类似这样的组合,其实如此一来会把我们已有的方式打乱,因为4个元素的组合,考虑到顺序,其实有很多,比如2个连续,3个连续,顺序不一样。

所以如果使用一个字段来校验区别,采用字符的形式,其实还是很难,很容易出错,比如ISU, SUI都代表的是一个含义,但是有多种组合方式。

或者换个思路,如果我使用4个字段来区别校验,分别为增删改查,问题似乎会迎刃而解,事实上我们就需要在4个字段间进行大量的组合,语句可能会很啰嗦。有的同学想使用类似 in ('select','insert','delete','update')的形式来校验,但是显而易见,这种方式无法定位边界,比如select+insert+update和select+insert+update+delete在上面的情况都会正常返回结果。

所以能不能用一个字段来标示这个问题呢,我想了一个。

比如增删改查,按照权重,其实应该是select,insert,update,delete这样的权重,如果我们制定为1,2,3,4的话,很容易混淆,比如是4,可能是1+3,4的组合,这样就不好判断到底是拥有哪些权限。

所以我们需要区别对待,借用了人民币的思路。人民币我们知道有1元,两元。五元,十元。所以我们按照这个方式来组合就会好很多,权重值为:

select(1)

insert(2)

update(5)

delete(10)

但是实际上权限在业务中是有组合关系的,会有如下的几种组合。

比如

select

insert+select

delete+select

update+select

select+insert+update

select+insert+update+delete

其实组合就这些,按照权重组合就是:

select 1

insert+select 3

delete+select 11

update+select 6

select+insert+update 8

select+insert+update+delete 18

所以我们得到一个数字,就知道它确切的权限了,在做处理的时候就很容易了。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/23718752/viewspace-2152360/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/23718752/viewspace-2152360/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值