Bagaimana ASP menerapkan kontrol izin hierarkis? Saya percaya masalah ini telah membuat banyak programmer pemula. Berikut ini adalah metode menggunakan ASP untuk mengimplementasikan kontrol izin hierarkis berdasarkan masalah ini.
Gunakan ASP untuk mengimplementasikan kontrol izin hierarkis
Artikel ini mengimplementasikan kontrol izin hierarkis dalam sistem manajemen akuntansi. Program ini ditulis dalam ASP dan JavaScript dan berjalan pada server Win NT yang dilengkapi dengan IIS4.0. Ini cepat dan mudah dipelihara.
Tingkat izin dibagi sebagai berikut:
①. Kepala Bagian Dekan dan Keuangan: Tidak dapat masuk, pertanyaan dan statistik tanpa batas dapat ditemukan;
②. Wakil Presiden: Jika Anda tidak dapat masuk, Anda dapat meminta dan menghitung akun Departemen yang bertanggung jawab;
③. Pemimpin Departemen: Jika Anda tidak dapat masuk, Anda dapat meminta dan menghitung akun departemen ini;
④. Akuntansi: Anda dapat memasukkan akun masing -masing departemen (seorang akuntan terkadang perlu membuat akun dari beberapa departemen), dan Anda hanya dapat meminta dan menghitung akun yang Anda masukkan sendiri.
Database dan bidang yang terlibat adalah sebagai berikut
①. JK_USER Database dan bidang: ID (nomor seri), BMID (nomor departemen), nama pengguna (nama pengguna), PWD (kata sandi), kanan (nilai izin);
②. Database dan bidang BM: ID (nomor seri), BMID (nomor departemen);
③, database dan bidang JZPZ: ID (nomor seri), BM (departemen), ZGS (anak perusahaan), XMZ (Grup Proyek), XM (Proyek), SR (Pendapatan), ZC (Pengeluaran), SZFX (arah pendapatan), SZXS (Formulir Pendapatan),
rq (tanggal), jbr (manajer), lrr (inputer), szsm (pernyataan masuk);
④, ZGS Database dan bidang: ID (nomor seri), nama ZGS (anak perusahaan) (nama perusahaan), BMID (nomor departemen).
1. Pertama, verifikasi legalitas identitas pengguna
Bandingkan nama pengguna dan kata sandi yang dikirimkan oleh pengguna dengan bidang di database JK_USER untuk menentukan legalitasnya. Hanya pengguna legal (administrator sistem membuka akun untuk mereka) yang dapat masuk. Pengguna legal memiliki
Ada empat tingkat izin, dan empat nilai izin diberikan untuk "1", "2", "3", dan "4". (Program dihilangkan).
2. Akuntansi Voucher (Kontrol Izin Level)
Fungsi akuntansi voucher secara khusus digunakan untuk akuntan dan tidak dapat digunakan oleh orang lain. Misalnya, saat memasuki antarmuka entri voucher sebagai tombol fungsi yang tidak bertanggung jawab, hanya tombol fungsi "Query Accounting Voucher" yang dapat dilihat, dan fungsi lainnya
Tombolnya tidak terlihat. Voucher yang dimasukkan pertama kali disimpan di meja sementara, yang disebut "Perpustakaan Voucher yang Tidak Ditanggung". Hanya setelah menjalankan fungsi "Voucher Accounting", Anda dapat memasukkan pustaka voucher di voucher "Voucher Library" yang tidak terhitung ".
Merevisi. Beberapa prosedur adalah sebagai berikut:
'Personel yang tidak bertanggung jawab masuk, tombol fungsi "Voucher Accounting" dan "Simpan Voucher Tidak Berdokumen" tidak ditampilkan
if (thispage.firstented) lalu
Jika sesi ("kanan") <> "1" lalu
Button1.Hide
tombol2.hide
akhiri jika
…………
'Secara otomatis mengisi waktu dan operator
TextBox7.Value = Tahun (Tanggal) & "-" & Bulan (Tanggal) & "" & Hari (Tanggal)
Textbox9.value = sesi ("nama pengguna")
Setel cnn1 = server.createObject ("adodb.connection")
Setel RST1 = Server.CreateObject ("AdodB.Recordset")
cnn1.cursorlocation = 3
CNN1.ConnectionTimeout = 30
cnn1.open "dsn = jky"
rst1.open "pilih * dari bm", cnn1,1,1, adcmdtext
Jika RST1.RecordCount> 0 lalu
RST1.MOVEFIRST
Id = rst1.fields ("id")
lakukan sementara tidak rst1.eof
Listbox3.additem rst1.fields ("bmname"), cint (rst1.fields ("id"))
"Response.Write rst1.fields (" bmname ") & rst1.fields (" id ")
rst1.movenext
lingkaran
akhiri jika
rst1.close
rst1.open "Pilih zgsname dari zgs di mana bmid =" & id, cnn1,1,1, adcmdtext
Jika RST1.RecordCount> 0 lalu
RST1.MOVEFIRST
lakukan sementara tidak rst1.eof
Listbox4.additem cstr (rst1.fields ("zgsname"))
rst1.movenext
lingkaran
akhiri jika
rst1.close
cnn1.close
Hubungi Writerst
akhiri jika
fungsi akhir
……………………
'Akuntansi Voucher
Sub Button2_onClick
redup
s = listbox1.selectectedIndex
Respons.write s
akhir sub
Sub ListBox3_onchange
redup id, i
i = listbox4.getCount ()
lakukan sementara saya> -1
call listbox4.removeitem (i)
I = I-1
lingkaran
id = listbox3GetValue (listbox3SelectedIndex)
Setel cnn2 = server.createObject ("adodb.connection")
Setel RST2 = Server.CreateObject ("ADODB.Recordset")
cnn2.cursorlocation = 3
CNN2.ConnectionTimeout = 30
cnn2.open "dsn = jky"
rst2.open "pilih zgsname dari zgs di mana bmid =" & id, cnn2,1,1, adcmdtext
jika rst2.recordcount> 0 lalu
Rst2.movefirst
lakukan sementara bukan rst2.eof
Listbox4.additem cstr (rst2.fields ("zgsname"))
rst2.movenext
lingkaran
akhiri jika
rst2.close
cnn2.close
akhir sub
Sub Button2_onClick
Setel CNN5 = Server.CreateObject ("AdodB.Connection")
cnn5.cursorlocation = 3
CNN5.ConnectionTimeout = 30
cnn5.open "dsn = jky"
cnn5.Execute "insert into jzpz(bm,zgs,xmz,xm,sr,zc,szfx,szxs,rq,jbr,lrr,szsm) select bm,zgs,xmz,xm,sr,zc,szfx,szxs,rq,jbr,
lrr, szsm dari wjzpz di mana lrr = "" & session ("nama pengguna") & "" "
CNN5.Execute "Hapus dari wjzpz di mana lrr =" "& sesi (" nama pengguna ") &" ""
akhir sub
3. Kueri Data (Kontrol Izin Level)
Permintaan dengan bidang kredensial sebagai kondisi. Ada kotak sebelum kriteria pemilihan untuk "√", di mana kondisi "departemen" harus dipilih (program ditambahkan secara otomatis), dan konten departemen secara otomatis didasarkan pada izin pengguna.
Panggil nilai yang sesuai dari database, dan konten cabang akan secara otomatis disesuaikan sesuai dengan departemen yang menjadi miliknya. Beberapa prosedur adalah sebagai berikut:
…………………
'Masukkan antarmuka kueri yang sesuai sesuai dengan nilai izin
…………………
Fungsi ThisPage_onenter ()
Setel cnn1 = server.createObject ("adodb.connection")
Setel RST1 = Server.CreateObject ("AdodB.Recordset")
cnn1.cursorlocation = 3
CNN1.ConnectionTimeout = 30
cnn1.open "dsn = jky"
Pilih Sesi Kasus ("Tright")
Kasus "3" "Wakil Presiden
rst1.open "pilih bm.bmname dari jk_user, bm di mana jk_user.bmid = bm.id dan jk_user.username =" "& sesi (" nama pengguna ")
& "" ", CNN1,1, ADCMDTEXT
Jika RST1.RecordCount> 0 lalu
RST1.MOVEFIRST
lakukan sementara tidak rst1.eof
Listbox1.additem cstr (rst1.fields ("bmname"))
rst1.movenext
lingkaran
akhiri jika
rst1.close
rst1.open "Pilih ZGSNAME DARI ZGS", CNN1,1,1, ADCMDTEXT
Jika RST1.RecordCount> 0 lalu
RST1.MOVEFIRST
lakukan sementara tidak rst1.eof
Listbox2.additem cstr (rst1.fields ("zgsname"))
rst1.movenext
lingkaran
akhiri jika
rst1.close
cnn1.close
CHECKBOX1.Setchecked (true)
Manajer Departemen Kasus "2"
Sesi ListBox1.Additem ("BM")
rst1.open "Pilih zgsname dari ZGS WHERE BMID =" & Sesi ("BMID"), CNN1,1,1, ADCMDTEXT
Jika RST1.RecordCount> 0 lalu
RST1.MOVEFIRST
lakukan sementara tidak rst1.eof
Listbox2.additem cstr (rst1.fields ("zgsname"))
rst1.movenext
lingkaran
akhiri jika
rst1.close
cnn1.close
CHECKBOX1.Setchecked (true)
“CHECKBOX1.0
Kasus "1" "Akuntan
rst1.open "pilih bmname dari bm", cnn1,1,1, adcmdtext
Jika RST1.RecordCount> 0 lalu
RST1.MOVEFIRST
lakukan sementara tidak rst1.eof
Listbox1.additem cstr (rst1.fields ("bmname"))
rst1.movenext
lingkaran
akhiri jika
rst1.close
rst1.open "Pilih ZGSNAME DARI ZGS", CNN1,1,1, ADCMDTEXT
Jika RST1.RecordCount> 0 lalu
RST1.MOVEFIRST
lakukan sementara tidak rst1.eof
Listbox2.additem cstr (rst1.fields ("zgsname"))
rst1.movenext
lingkaran
akhiri jika
rst1.close
cnn1.close
Kasus "4" Dean
rst1.open "pilih bmname dari bm", cnn1,1,1, adcmdtext
Jika RST1.RecordCount> 0 lalu
RST1.MOVEFIRST
lakukan sementara tidak rst1.eof
Listbox1.additem cstr (rst1.fields ("bmname"))
rst1.movenext
lingkaran
akhiri jika
rst1.close
rst1.open "Pilih ZGSNAME DARI ZGS", CNN1,1,1, ADCMDTEXT
Jika RST1.RecordCount> 0 lalu
RST1.MOVEFIRST
lakukan sementara tidak rst1.eof
Listbox2.additem cstr (rst1.fields ("zgsname"))
rst1.movenext
lingkaran
akhiri jika
rst1.close
cnn1.close
Akhiri Pilih
akhiri jika
…………
fungsi akhir
'Permintaan kredensial sesuai dengan izin
SUB BUTTON1_ONCLICK
redup rst2, cnn2, str, i
redup bm (1), zgs (1), xmz (1), xm (1), szfx (1), szxs (1), rq (2), jbr (1)
bm (0) = centang kotak1.getChecked ()
Jika BM (0) lalu
BM (1) = listbox1.getText (listbox1.selectectedIndex)
str = "dan bm =" "& bm (1) &" ""
akhiri jika
zgs (0) = centang kotak2.getchecked ()
Jika zgs (0) lalu
ZGS (1) = listbox2.gettext (listbox2.selectectedIndex)
str = str & "dan zgs =" & zgs (1) & "" "
akhiri jika
xmz (0) = centang kotak .GetChecked ()
jika xmz (0) lalu
xmz (1) = trim (txtxmz.value)
str = str & "dan xmz seperti"%"& xmz (1) &"%""
akhiri jika
xm (0) = centang kotak4.getChecked ()
Jika xm (0) lalu
xm (1) = trim (tztxm.value)
str = str & "dan xm seperti"%"& xm (1) &"%""
akhiri jika
szfx (0) = centang kotak5.getChecked ()
jika szfx (0) lalu
szfx (1) = listbox3.getText (listbox3.selectectedIndex)
str = str & "dan szfx =" "& szfx (1) &" ""
akhiri jika
SZXS (0) = CHECKBOX6.GETCHECKED ()
Jika SZXS (0) lalu
szxs (1) = listbox4.getText (listbox4.selectectedIndex)
str = str & "dan szxs =" "& szxs (1) &" ""
akhiri jika
jbr (0) = checkbox8.getChecked ()
Jika JBR (0) lalu
jbr (1) = trim (txtjbr.value)
str = str & "dan jbr seperti"%"& jbr (1) &"%""
akhiri jika
Setel cnn2 = server.createObject ("adodb.connection")
Setel RST2 = Server.CreateObject ("ADODB.Recordset")
cnn2.cursorlocation = 3
CNN2.ConnectionTimeout = 30
cnn2.open "dsn = jky"
Response.write "<tabel border =" 1 "cellpadding = 0 cellspacing = 0 width =" 650 "height =" 33 ">"
Response.write "<tr>"
Response.write "<td width =" 100%"colspan =" 6 "tinggi =" 44 "align =" tengah "bgcolor = lightblue>"
Response.write "<p align =" center "> <b> <font color ="#000084 "> Daftar voucher akuntansi"
Response.write "</font> </b> </p> </td> </tr>"
Response.write "<tr>"
Response.write "<td width =" 15%"bgcolor = lightsteelblue>"
Response.write "departemen </td>"
Response.write "<td width =" 20%"bgcolor = lightsteelblue>"
Response.write "Anak Perusahaan </td>"
Response.write "<td width =" 15%"bgcolor = lightsteelblue>"
Response.write "Tim Proyek </td>"
Response.write "<td width =" 15%"bgcolor = lightsteelblue>"
Response.write "Nama proyek/nomor kontrak </td>"
Response.write "<td width =" 15%"bgcolor = lightsteelblue>"
Response.write "Jumlah pendapatan (10.000 yuan) </td>"
Response.write "<td width =" 15%"bgcolor = lightsteelblue>"
Response.write "Jumlah pengeluaran (10.000 yuan) </td> </tr>"
jika sesi ("tright") = "1" lalu
"Response.write" Aaaaaaaaa "
rst2.open "pilih * dari jzpz di mana id> 0 dan lrr =" "& sesi (" nama pengguna ") &" "" & str, cnn2,1,1, adcmdtext
kalau tidak
"Response.write" ffffffffffffff "
rst2.open "pilih * dari jzpz di mana id> 0" & str, cnn2,1,1, adcmdtext
akhiri jika
jika rst2.recordcount> 0 lalu
rst2.movefirst
rst2.pageSize = 20
rst2.absolutepage = 1
i = 0
lakukan sementara tidak rst2.eof dan saya <rst2.pagesize
Response.write "<tr>"
Response.write "<td width =" 15%"bgcolor = lightgrey>" & rst2.fields ("bm") & "</td>"
Response.write "<td width =" 15%"bgcolor = lightgrey>" & rst2.fields ("zgs") & "</td>"
Response.write "<td width =" 15%"bgcolor = lightgrey>" & rst2.fields ("xmz") & "</td>"
Response.write "<td width =" 15%"bgcolor = lightgrey> <a href =" fmjz1.asp? Id = "& rst2.fields (" id ") &" "
target = "_ blank"> "& rst2.fields (" xm ") &" </a> </td> "
Response.write "<td width =" 5%"bgcolor = lightgrey>" & rst2.fields ("sr") & "</td>"
Response.write "<td width =" 5%"bgcolor = lightgrey>" & rst2.fields ("zc") & "</td>"
Response.write "</tr>"
i = i+1
rst2.movenext
lingkaran
akhiri jika
Response.write "</able>"
Response.write "</div>"
j = rst2.pagecount
Response.write "<p align = center> <b> Total jumlah halaman:"
untuk i = 1 hingga j
Response.write "<a href =" fmjzpzck1.asp? Id = "& i &" "target =" _ blank ">" & i & "</a>" & ""
Jika J Mod 10 = 0 maka
Response.write "<br>"
akhiri jika
Berikutnya
Response.write "</b> </p>"
rst2.close
cnn2.close
…………
akhir sub
Saat menerapkan program di atas, kueri khusus dapat diimplementasikan sesuai dengan izin pengguna dan sesuai dengan persyaratan pengguna. Sistem berjalan dan melewati Win NT, IIS4.0, Win98, dan PWS.
Pernahkah Anda belajar cara menerapkan kontrol izin hierarkis di ASP? Jika masih ada sesuatu yang tidak jelas, silakan berkonsultasi dengan editor bug, dan kami akan membalas sesegera mungkin.