asp

位置:IT落伍者 >> asp >> 浏览文章

用ASP实现分级权限控制


发布日期:2018年11月21日
 
用ASP实现分级权限控制
本文实现的是一个帐务管理系统中分级权限的控制程序使用ASP和JavaScript编写在装有IIS的win NT服务器上运行速度快易维护

权限级别划分如下

院长和财务科长不能输入可以无限制查询统计

副院长不能输入可以查询统计其分管部门的帐务

部门领导不能输入可以查询统计本部门的帐务

会计能输入各部门的帐务(一个会计有时要做几个部门的帐)只能查询统计自己输入的帐务

涉及的数据库和字段如下

JK_USER数据库及字段id(序列号)bmid(部门号)username(用户名)pwd(口令)right(权限值)

BM数据库及字段:id(序列号) bmid(部门号)

JZPZ数据库及字段id(序列号)bm(部门) zgs(子公司)xmz(项目组)xm(项目)sr(收入)zc(支出)szfx(收支方向)szxs(收支形式)rq(日期)jbr(经办人)lrr(录入人)szsm(收支说明)

ZGS数据库及字段id(序列号)zgs(子公司)name(公司名)bmid(部门编号)

.首先进行用户身份合法性验证

将用户提交的用户名和口令与数据库JK_USER中的字段对照对照以确定其合法性只有合法的用户(系统管理员为其开过户)才可以进入合法用户有四种权限级别分别赋予四种权限值(程序略)

.凭证记帐(分级权限控制)

凭证记帐功能是专为会计人员服务的其他人不可以使用如以非会计人员身份进入凭证录入界面时只有查询记帐凭证功能按钮可见其它功能按钮不可见录入的凭证先存放在一个临时表里称为未记帐凭证库只有运行凭证记帐功能后才进入凭证库未记帐凭证库中的凭证可以修改部分程序如下

非会计人员进入不显示凭证记帐保存未记帐凭证功能按钮

if (thisPagefirstEntered) then

if session(tright)<> then

buttonhide

buttonhide

end if

…………

自动填写时间和操作人

Textboxvalue=year(date) & & month(date) & & day(date)

Textboxvalue =session(username)

set cnn=serverCreateObject(nnection)

set rst=serverCreateObject(adodbrecordset)

cnnCursorLocation=

cnnConnectionTimeout =

cnnOpen DSN=jky

rstOpen select * from bm cnnadcmdtext

if rstRecordCount > then

RSTMoveFirst

Id=rstFields(id)

do while not rstEOF

ListboxaddItem rstFields(bmName)cint(rstFields(id))

ResponseWrite rstFields(bmname) & rstFields(id)

rstMoveNext

loop

end if

rstClose

rstOpen select zgsname from zgs where bmid= & idcnnadcmdtext

if rstRecordCount > then

rstMoveFirst

do while not rstEOF

ListboxaddItem cstr(rstFields(zgsname))

rstMoveNext

loop

end if

rstClose

cnnclose

call writerst

end if

end function

………………

凭证记帐

sub button_onclick

dim s

s=ListboxselectedIndex

ResponseWrite s

end sub

sub listbox_onchange

dim idi

i=ListboxgetCount()

do while i>

call ListboxremoveItem(i)

i=i

loop

id=listboxgetValue (listboxselectedIndex)

set cnn=serverCreateObject(nnection)

set rst=serverCreateObject(adodbrecordset)

cnnCursorLocation=

cnnConnectionTimeout =

cnnOpenDSN=jky

rstOpen select zgsName from zgs where bmid= & idcnnadcmdtext

if rstRecordCount > then

RSTMoveFirst

do while not rstEOF

ListboxaddItem cstr(rstFields(zgsName))

rstMoveNext

loop

end if

rstClose

cnnClose

end sub

sub button_onclick

set cnn=serverCreateObject(nnection)

cnnCursorLocation=

cnnConnectionTimeout =

cnnOpenDSN=jky

cnnExecute insert into jzpz(bmzgsxmzxmsrzcszfxszxsrqjbrlrrszsm) select bmzgsxmzxmsrzcszfxszxsrqjbrlrrszsm from wjzpz where lrr= & session(username) &

cnnExecute delete from wjzpz where lrr= & session(username) &

end sub

数据查询(分级权限控制)

以凭证的字段为条件进行查询在供选条件前有一方框供打其中部门条件必选(程序自动加上)部门内容由程序根据用户的权限自动从数据库中调用相应值分公司内容根据所属部门自动调整部分程序如下

……………

根据权限值进入相应的查询界面

……………

function thisPage_onenter()

set cnn=serverCreateObject(nnection)

set rst=serverCreateObject(adodbrecordset)

cnnCursorLocation=

cnnConnectionTimeout =

cnnOpen dsn=jky

select case session(Tright)

case 副院长

rstOpen select bmbmName from jk_user bm where JK_userbmid=bmid and jk_userusername =& session(username) & cnnadcmdtext

if rstRecordCount > then

RSTMoveFirst

do while not rstEOF

ListboxaddItem cstr(rstFields(bmName))

rstMoveNext

loop

end if

rstClose

rstOpen select zgsname from zgs cnn

上一篇:微软建议的ASP性能优化28条守则

下一篇:初学ASP:常用ASP内置函数