熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> .NET編程 >> 正文

用ASP實現分級權限控制

2013-11-13 10:00:27  來源: .NET編程 
    本文實現的是一個帳務管理系統中分級權限的控制程序使用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
From:http://tw.wingwit.com/Article/program/net/201311/12280.html
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.