精细化(添加 修改 删除 查看)用户权限分配方法

我们在设计系统时,为了达到高度的用户权限限制,需要对用户权限进行精细化分配,现在提供一种方法,这种方法估计大虾们都在用,偶是今天闲来无事想的。优点是在增加权限功能判断的时候,只需在后台增加权限值,前台增加或者修改判断位置,而判断函数无需修改。

 

我们就拿添加、删除、修改、查看四种权限来说明此方法,可以继续扩展其他权限。

 

一、权限值分配规则,以2的N(N>=0 )次幂为依准,采用依据是任何多个值相加都不会产生重复数。这四种权限值分配如下,也可以自己调整:

 

功能  功能值

 

添加     1

修改     2

删除     4

查看     8

 

数据库存储总权限功能是将某用户组所具有的某功能值进行叠加:

 

功能值和   权限

 

1             添加

2             修改

3             删除

4             查看

5             添加、查看

6             修改、删除

.              .

.              .

.              .

 

依次类推,直到这四个相加完全的最大值,此处是15,就是同时具备添加、修改、删除、查看的功能。

 

二、数据库记录相应权限组所具有的功能链接ID和功能值,例如:

 

系统功能表

 

ID      功能          链接地址

100   管理用户    edit_user.php

101   管理用户组 edit_role.php

 

系统用户组表

 

ID      组名         权限

200   普通用户   100|3,101|7

 

 

权限中的100是系统功能表中“管理用户”对应的ID,3是普通用户组所具有的“管理用户”的权限。

权限中的101是系统功能表中“管理用户组”对应的ID,7是普通用户组所具有的“管理用户组”的权限。

 

具体3和7所包含的权限参照第一步的功能值和对照表。

 

三、页面判断权限方法,这个是关键。

 

权限值用roleVal表示,这个是在数据库中存储,比如第二步中的3或7

 

您想判断的基本权限值用baseRoleVal表示,这个就是第一步中的添加(1)修改(2)删除(4)查看(5)等

 

判断规则如下:

baseRoleVal<=roleVal 并且 roleVal<(取整(roleVal/baseRoleVal)+1)*baseRoleVal

 

如果满足上面的标准,说明具备该权限。

 

例如PHP的判断函数如下:

 

 

 

在建立数据表时,如果是针对精密权限限制和其他功能方面考虑,我想应该具备以下几个字段:

 

一、自动编号字段ID。

 

也许你认为有别的字段已经可以区分每条记录,此字段可以不用,用了感觉多余。但是我要说的是,多一个字段不会占用太大的数据空间,关键是有时候你会发现这个东西太有用了,会省去你很大的麻烦。

 

二、记录创建时间、记录创建人、记录最后修改时间、记录最后修改人

 

这四个不用多说了,就是责任到人。操作日志当然是必不可少的。当出现问题时,你能够找到问题的所在。问题不是你想找的,是别人给你找问题,一般是领导。

 

三、记录的状态字段。

 

该字段记录该条数据的有效、无效、删除到回收站等状态。为什么要这么做,原因是:问题不是你想找的,是别人给你找问题,一般是领导。

下手不要那么快,多留条后路。你会发现帮你解决问题的时候很有用。

 

四、分公司权限、部门权限、员工权限、权限组权限字段

 

这是权限控制精细化的标志。有写东西可能没用,比如分公司权限,但是要预留,占用也占不了多大空间,但是如果没有,你想加时估计不是设计时这么简单的问题了。

具体怎么判断是否有权操作或如何操作这条数据,就看不同的需求了。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值