当前位置:编程学习 > asp >>

基于用户的安全策略在B/S中的实现(2)

2 菜单管理
菜单管理主要包括两部分的内容,菜单项的编辑维护与根据当前登陆用户的权限进行菜单的生成。
菜单的编辑维护就是指对菜单表的维护。因为比较简单,在此不做详细说明,只是要注意以下三个问题:
第一、菜单编号与权限位数的生成。因为菜单项是可以删除的,如果新增菜单项获取编号与权限位数时只是在最大的编号上增1的话,必须会导致编码资源的浪费,特别是权限位数,只有100位,如果由于跳号而导致了编码资源的浪费,必然导致新功能模块无编码资源可用。所以,在添加新菜单项是必须要解决跳号的问题。请看以下取编号与权限位数的语句:
select min(CDBH)+1 from CDB where CDBH+1 not in(select CDBH from CDB)
select min(QXWS)+1 from CDB where QXWS+1 not in(select QXWS from CDB)
我们只要保证对于菜单维护本身的这个功能模块给它分配菜单编号为1,权限位数为1的话,就能够保证在任何情况下新增菜单项时菜单编号与权限位数不会跳号,编码资源能够得到充分利用。因为菜单维护本身这个菜单项在通常情况下是不会被删除的。
第二、入口路径是指进入本功能模块的第一个页面的连接地址,请注意路径的相对性问题。
第三、相关文件是指完成本功能模块的页面组合。一般情况下,一个菜单项下连接一个功能模块,要完成该功能模块的功能可能需要若干个ASP页面。例如,菜单项1的入口路径是../menu1.asp,还要以下三个页面,menu11.asp, menu12.asp, menu13.asp,则相关文件的内容是指meunu1.asp, menu11.asp,menu12.asp,menu13.asp这个字符串序例。该项的主要作用是为了安全检查而设置的,也就是页面在系统中的注册过程。
根据当前登陆用户的权限进行菜单生成时有一个关键的会话变量:Session("YHQX"),该变量在后面将要进行描述的安全检查过程中生成,一直保存到用户退出系统或者会话超时失效时为止。里面的内容就是100位的当前登陆用户的权限字符串。根据该变量生成菜单的过程如下:
<% sql="select * from CDB where FCDBH=0 order by CDBH"
set Rs=Conn.execute(sql)
'取得菜单表中的所有有子菜单的父菜单
'遍历父菜单
do while not Rs.eof
SubMenuNum=0
sql="select QXWS from CDB where FCDBH="&Rs("CDBH")&" order by CDBH"
set Rs1=Conn.execute(sql)
补充:asp教程,客户端相关打印 
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,