在用ASP,javascript与ORACLE开发一套税务系统的后台管理软件时,我们成功的实现了基于用户组与用户的安全策略,并在灵活性,安全性方面达到了较好的效果。我们将分存贮结构,菜单管理,权限分配,安全检查四个方面将基于用户的安全策略在B/S中的实现介绍给大家。
1 存贮结构
存贮结构对于本系统来说就是数据库表的结构主要由以下几个表:
A.菜单表(CDB)
字段名
字段说明
类型
备注
CDBH
菜单编号
NUMBER(3)
非空主键
FCDBH
父菜单
NUMBER(3)
CDMC
菜单名称
VARCHAR2(40)
QXWS
权限位数
NUMBER(2)
RKLJ
入口路径
VARCHAR2(50)
XGWJ
相关文件
VARCHAR(200)
SFQY
是否启用
CHAR(1)
DEFAULT 1
B.用户组表(YHZB)
字段名
字段说明
类型
备注
SSDW
所属单位
CHAR(4)
非空主键
YHZBH
用户组号
CHAR(4)
非空主键
YHZMC
名称
VARCHAR2(40)
YHZQX
权限
CHAR(100)
YHGS
用户个数
NUMBER(3)
DEFAULT 0
SFQY
是否启用
CHAR(1)
DEFAULT 1
C.用户表(YHB)
字段名
字段说明
类型
备注
SSDW
所属单位
CHAR(4)
非空主键
YHBH
用户编号
CHAR(4)
非空主键
SSYHZ
用户组
CHAR(4)
DLM
登陆名
VARCHAR2(25)
DLMM
登陆密码
VARCHAR2(40)
YHXM
用户姓名
VARCHAR(20)
YHQX
用户权限
CHAR(100)
SFQY
是否启用
CHAR(1)
DEFAULT 1
权限的存贮采取的是“位”的方式,根据系统规模,我们估计系统的菜单项不会超过100个,则定义了100位作为权限的存贮。如用户表中的用户权限字段,如果用户在第1位上不具备该权限,则第一位为“0”,反之,如果用户在第1位上有该权限,则第一位为“1”。
菜单表用来存贮系统中所有的菜单项,通过提供的编辑方法,可以对菜单表中的菜单项进行添加修改删除,从而为灵活性打下基础。根据菜单编号与父菜单编号的对应关系,根据递归原理,很容易实现多级菜单,顶级菜单的父菜单编号为0。权限位数是菜单表中比较关键的一个字段,它表明该菜单在权限上的存贮的位置,例,如果菜单编号为10的菜单项的权限位数为10的话,当某用户的权限第10位为“1”时就表明该用户有使用菜单编号为10的菜单项的权力,反之,则没有。
用户组表用来存贮系统中所有的用户组,通过提供的编辑方法,也可以对其进行灵活编辑。关键字段为用户组权限为100位的字符串,存贮该用户组的权限。
用户表用来存贮系统中所有的用户,通过提供的编辑方法,可以对其进编辑操作。关键字段为用户权限为100位的字符串,存贮该用户的权限。该权限是在建立用户时从该用户所属的用户组继承过来的,建立好用户时也可以单独对用户的权限进行修改。
其它字段将在后面的介绍中提到,在此不做详细说明。