在用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位的字符串,存贮该用户的权限。该权限是在建立用户时从该用户所属的用户组继承过来的,建立好用户时也可以单独对用户的权限进行修改。
其它字段将在后面的介绍中提到,在此不做详细说明。