二进制权限控制(二)
标签(空格分隔): 未分类
1、权限值的设定
用二进制来表示权限值应该是按位来设置,每个位占一个,表示一种权限或一个菜单,如:
0000000 1 表示拥有菜单编号为1的权限
000000 1 0 表示拥有菜单编号为2的权限
……
如张三拥有权限11(00001011),表示张三可以访问菜单编号为4、2、1的菜单。2.权限的赋予(或操作):
如果张三的权限为11(00001011),现在要给他赋于菜单编号为3(00000100=4,从右往左数第三位为1)的权限,则进行‘或’操作,即:11 | 4 = 00001011 | 00000100 = 00001111 = 153.权限的回收(权限取反后“与”操作)
如要回收菜单编号为2(00000010)的权限,先对菜单权限取反:~2 = 11111101
与原来的权限进行“与”操作:00001111 & 11111101 = 00001101 = 13,即回收了张三菜单2的访问权限。
CREATE TABLE StatRole(
RoleID INT,
RoleName VARCHAR(100), --角色名称
MenuRights LVARCHAR(1000) DEFAULT '0', --菜单权限
ARights LVARCHAR(1000) DEFAULT '0', --添加权限
DRights LVARCHAR(1000) DEFAULT '0', --删除权限
ERights LVARCHAR(1000) DEFAULT '0', --修改权限
QRights LVARCHAR(1000) DEFAULT '0', --查询权限
XRights LVARCHAR(1000) DEFAULT '0', --备用权限x
YRights LVARCHAR(1000) DEFAULT '0', --备用权限y
ZRights LVARCHAR(1000) DEFAULT '0', --备用权限z
ModifyTime CHAR(19)
);
CREATE TABLE StatMenu(
MenuID INT,
PID INT,
MenuTyp