¿Cómo implementa ASP el control del permiso jerárquico? Creo que este problema ha perturbado a muchos programadores novatos. El siguiente es el método de usar ASP para implementar el control de permiso jerárquico en función de este problema.
Use ASP para implementar el control de permiso jerárquico
Este artículo implementa el control de los permisos jerárquicos en un sistema de gestión de contabilidad. El programa está escrito en ASP y JavaScript y se ejecuta en un servidor WIN NT equipado con IIS4.0. Es rápido y fácil de mantener.
Los niveles de permiso se dividen de la siguiente manera:
①. Decano y Jefe de la Sección de Finanzas: No se puede ingresar, se pueden encontrar consultas y estadísticas ilimitadas;
②. Vicepresidente: si no puede ingresar, puede consultar y contar las cuentas del departamento a cargo;
③. Líder del departamento: si no puede ingresar, puede consultar y contar las cuentas de este departamento;
④. Contabilidad: puede ingresar las cuentas de cada departamento (un contador a veces necesita hacer cuentas de varios departamentos), y solo puede consultar y contar las cuentas que ingresó usted mismo.
Las bases de datos y los campos involucrados son los siguientes
①. Base de datos y campos de JK_USER: ID (número de serie), BMID (número de departamento), nombre de usuario (nombre de usuario), pwd (contraseña), derecho (valor de permiso);
②. Base de datos y campos de BM: ID (número de serie), BMID (número de departamento);
③, Base de datos y campos de JZPZ: ID (número de serie), BM (departamento), ZGS (subsidiario), XMZ (grupo Project), XM (proyecto), SR (ingresos), ZC (gastos), SZFX (dirección de ingresos), SZXS (Formulario de ingresos),,
RQ (fecha), JBR (gerente), LRR (Entrada), SZSM (declaración entrante);
④, Base de datos y campos de ZGS: ID (número de serie), nombre ZGS (subsidiario) (nombre de la empresa), BMID (número de departamento).
1. Primero, verifique la legalidad de la identidad del usuario
Compare el nombre de usuario y la contraseña enviados por el usuario con los campos en la base de datos JK_USER para determinar su legalidad. Solo los usuarios legales (el administrador del sistema abre una cuenta para ellos) pueden ingresar. Los usuarios legales tienen
Hay cuatro niveles de permiso, y se dan cuatro valores de permiso a "1", "2", "3" y "4". (Programa omitido).
2. Contabilidad de cupones (control de permiso de nivel)
La función de contabilidad del comprobante se usa especialmente para los contadores y no puede ser utilizado por otros. Por ejemplo, al ingresar la interfaz de entrada del comprobante como no cuenta, solo se puede ver el botón de "cupón de contabilidad de consultas" y otras funciones
El botón no es visible. Los cupones ingresados se almacenan primero en una tabla temporal, que se llama la "biblioteca de cupones no contabilizados". Solo después de ejecutar la función "Contabilidad de cupones" puede ingresar la biblioteca de cupones en los cupones "Biblioteca de cupones no contado".
Revisar. Algunos procedimientos son los siguientes:
El personal de "no contabilizar el personal, los botones de función" Contabilidad de cupones "y" Guardar cupones indocumentados "no se muestran
if (thisPage.Firstentered) entonces
if session ("correcto") <> "1" entonces
botón 1
botón 2. CUADRO
final si
…………
'Complete automáticamente el tiempo y el operador
TextBox7.Value = año (fecha) y "-" y mes (fecha) y "-" & Day (fecha)
Textbox9.value = session ("nombre de usuario")
establecer cnn1 = server.createObject ("ADODB.Connection")
Establecer rst1 = server.createObject ("ADODB.RecordSet")
cnn1.cursorlocation = 3
CNN1.ConnectionTimeOut = 30
cnn1.open "dsn = jky"
rst1.open "Seleccionar * de BM", CNN1,1,1, ADCMDTEXT
Si rst1.RecordCount> 0 entonces
RST1.MOVEFIRST
Id = rst1.fields ("id")
haz mientras no rst1.eof
ListBox3.Additem rst1.fields ("bmname"), cint (rst1.fields ("id"))
"Response.write rst1.fields (" bmname ") y rst1.fields (" id ")
rst1.movenext
bucle
final si
rst1.clar
rst1.open "Seleccione ZGSName de ZGS donde bmid =" & id, CNN1,1,1, ADCMDTEXT
Si rst1.RecordCount> 0 entonces
RST1.MOVEFIRST
haz mientras no rst1.eof
ListBox4.Additem CSTR (RST1.FIELDS ("ZGSNAME"))
rst1.movenext
bucle
final si
rst1.clar
CNN1.clar
Llamar a Writerst
final si
función final
……………………
'Contabilidad de cupones
sub button2_onclick
atenuante
S = ListBox1.SelectedIndex
Respuesta.WRITE S
final
Sub ListBox3_onchange
Dim id, yo
i = listbox4.getCount ()
hacer mientras i> -1
Llamar ListBox4.RemoveItem (i)
i = i-1
bucle
id = listbox3.getValue (listbox3.selectedIndex)
establecer cnn2 = server.createObject ("ADODB.Connection")
Establecer rst2 = server.createObject ("ADODB.Recordset")
cnn2.cursorlocation = 3
CNN2.ConnectionTimeOut = 30
cnn2.open "dsn = jky"
rst2.open "Seleccione ZGSName de ZGS donde bmid =" & id, CNN2,1,1, ADCMDTEXT
Si rst2.RecordCount> 0 entonces
RST2.MoveFirst
haz mientras no rst2.EOF
ListBox4.Additem CSTR (RST2.FIELDS ("ZGSNAME"))
RST2.MoVENEXT
bucle
final si
RST2. CLOSE
CNN2. CLOSE
final
sub button2_onclick
Establecer cnn5 = server.createObject ("ADODB.Connection")
CNN5.CursorLocation = 3
CNN5.ConnectionTimeOut = 30
cnn5.open "dsn = jky"
cnn5.ExCute "Inserte en 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 de wjzpz donde lrr = "" & session ("nombre de usuario") y "" ""
cnn5.Execute "Eliminar de Wjzpz donde lrr =" "& Session (" Nombre de usuario ") y" "" "
final
3. Consulta de datos (control de permiso de nivel)
Consulta con los campos de las credenciales como condición. Hay un cuadro antes de los criterios de selección para "√", donde se debe seleccionar la condición del "departamento" (el programa se agrega automáticamente) y el contenido del departamento se basa automáticamente en los permisos del usuario.
Llame al valor correspondiente de la base de datos, y el contenido de la rama se ajustará automáticamente de acuerdo con el departamento al que pertenece. Algunos procedimientos son los siguientes:
…………………
'Ingrese la interfaz de consulta correspondiente de acuerdo con el valor del permiso
…………………
function thisPage_onenter ()
establecer cnn1 = server.createObject ("ADODB.Connection")
Establecer rst1 = server.createObject ("ADODB.RecordSet")
cnn1.cursorlocation = 3
CNN1.ConnectionTimeOut = 30
cnn1.open "dsn = jky"
Seleccione la sesión de casos ("Tright")
Caso "3" "Vicepresidente
rst1.open "Seleccione bm.bmname de jk_user, bm donde jk_user.bmid = bm.id y jk_user.username =" "& session (" nombre de usuario ")
& "" ", CNN1,1, ADCMDTEXT
Si rst1.RecordCount> 0 entonces
RST1.MOVEFIRST
haz mientras no rst1.eof
ListBox1.additem CSTR (RST1.FIELDS ("BMNAME"))
rst1.movenext
bucle
final si
rst1.clar
rst1.open "Seleccione ZGSName de ZGS", CNN1,1,1, ADCMDTEXT
Si rst1.RecordCount> 0 entonces
RST1.MOVEFIRST
haz mientras no rst1.eof
Listbox2.additem cstr (rst1.fields ("zgsname"))
rst1.movenext
bucle
final si
rst1.clar
CNN1.clar
Checkbox1.Setchecked (verdadero)
Caso "2" Gerente del departamento
ListBox1.Additem Session ("BM")
rst1.open "Seleccione ZGSName de ZGS donde bmid =" & Session ("BMID"), CNN1,1,1, ADCMDText
Si rst1.RecordCount> 0 entonces
RST1.MOVEFIRST
haz mientras no rst1.eof
Listbox2.additem cstr (rst1.fields ("zgsname"))
rst1.movenext
bucle
final si
rst1.clar
CNN1.clar
Checkbox1.Setchecked (verdadero)
"Casilla de verificación1.0
Caso "1" "Contador
rst1.open "Seleccione BMName de BM", CNN1,1,1, ADCMDText
Si rst1.RecordCount> 0 entonces
RST1.MOVEFIRST
haz mientras no rst1.eof
ListBox1.additem CSTR (RST1.FIELDS ("BMNAME"))
rst1.movenext
bucle
final si
rst1.clar
rst1.open "Seleccione ZGSName de ZGS", CNN1,1,1, ADCMDTEXT
Si rst1.RecordCount> 0 entonces
RST1.MOVEFIRST
haz mientras no rst1.eof
Listbox2.additem cstr (rst1.fields ("zgsname"))
rst1.movenext
bucle
final si
rst1.clar
CNN1.clar
Caso "4" Dean
rst1.open "Seleccione BMName de BM", CNN1,1,1, ADCMDText
Si rst1.RecordCount> 0 entonces
RST1.MOVEFIRST
haz mientras no rst1.eof
ListBox1.additem CSTR (RST1.FIELDS ("BMNAME"))
rst1.movenext
bucle
final si
rst1.clar
rst1.open "Seleccione ZGSName de ZGS", CNN1,1,1, ADCMDTEXT
Si rst1.RecordCount> 0 entonces
RST1.MOVEFIRST
haz mientras no rst1.eof
Listbox2.additem cstr (rst1.fields ("zgsname"))
rst1.movenext
bucle
final si
rst1.clar
CNN1.clar
final seleccionar
final si
…………
función final
'Credenciales de consulta según los permisos
sub button1_onclick
Dim RST2, CNN2, Str, I
Dim BM (1), ZGS (1), XMZ (1), XM (1), SZFX (1), SZXS (1), RQ (2), JBR (1)
bm (0) = checkbox1.getChecked ()
Si BM (0) entonces
bm (1) = listbox1.gettext (listbox1.selectedIndex)
str = "y bm =" "& bm (1) y" ""
final si
zgs (0) = checkbox2.getChecked ()
Si zgs (0) entonces
zgs (1) = listbox2.gettext (listbox2.selectedIndex)
str = str & "y zgs =" & zgs (1) y "" "
final si
xmz (0) = checkbox3.getChecked ()
Si xmz (0) entonces
XMZ (1) = TRIM (TXTXMZ.Value)
str = str & "y xmz como"%"y xmz (1) y"%""
final si
xm (0) = checkbox4.getChecked ()
Si xm (0) entonces
xm (1) = TRIM (TZTXM.Value)
str = str & "y xm como"%"y xm (1) y"%""
final si
szfx (0) = checkbox5.getChecked ()
Si szfx (0) entonces
szfx (1) = listbox3.gettext (listbox3.selectedIndex)
str = str & "y szfx =" "& szfx (1) y" ""
final si
szxs (0) = checkbox6.getChecked ()
Si szxs (0) entonces
szxs (1) = listbox4.gettext (listbox4.selectedIndex)
str = str & "y szxs =" "& szxs (1) y" ""
final si
JBR (0) = checkbox8.getChecked ()
Si JBR (0) entonces
JBR (1) = TRIM (TXTJBR.Value)
str = str & "y jbr como"%"y jbr (1) y"%""
final si
establecer cnn2 = server.createObject ("ADODB.Connection")
Establecer rst2 = server.createObject ("ADODB.Recordset")
cnn2.cursorlocation = 3
CNN2.ConnectionTimeOut = 30
cnn2.open "dsn = jky"
Respuesta.write "<table border =" 1 "CellPadding = 0 CellSpacing = 0 Width =" 650 "Height =" 33 ">"
Response.Write "<tr>"
Response.write "<td width =" 100%"colspan =" 6 "height =" 44 "align =" Middle "bgcolor = lightblue>"
Response.write "<P align =" Center "> <b> <font color ="#000084 "> Lista de cupones de contabilidad"
Response.write "</font> </b> </p> </td> </tr>"
Response.Write "<tr>"
Response.write "<td width =" 15%"bgcolor = lightheelblue>"
Response.Write "Departamento </td>"
Response.write "<td width =" 20%"bgcolor = lightheelblue>"
Response.Write "Subsidiarias </td>"
Response.write "<td width =" 15%"bgcolor = lightheelblue>"
Response.Write "Project Team </td>"
Response.write "<td width =" 15%"bgcolor = lightheelblue>"
Response.Write "Nombre del proyecto/Número de contrato </td>"
Response.write "<td width =" 15%"bgcolor = lightheelblue>"
Response.WRITE "Monto de ingresos (10,000 yuanes) </td>"
Response.write "<td width =" 15%"bgcolor = lightheelblue>"
Respuesta
if session ("tright") = "1" entonces
"Response.write" Aaaaaaaaa "
rst2.open "Seleccione * de JZPZ donde id> 0 y lrr =" "& Session (" Nombre de usuario ") y" "" y Str, CNN2,1,1, ADCMDTEXT
demás
"Response.write" ffffffffffffff "
rst2.open "Seleccione * de JZPZ donde id> 0" & Str, CNN2,1,1, ADCMDTEXT
final si
Si rst2.RecordCount> 0 entonces
RST2.MoveFirst
rst2.pagesize = 20
rst2.absolutePage = 1
i = 0
Hacer aunque no RST2.EOF e I <rst2.pagesize
Response.Write "<tr>"
Response.write "<td width =" 15%"bgcolor = lightgrey>" & rst2.fields ("bm") y "</td>"
Response.write "<td width =" 15%"bgcolor = lightgrey>" & rst2.fields ("zgs") y "</td>"
Response.write "<td width =" 15%"bgcolor = lightgrey>" & rst2.fields ("xmz") y "</td>"
Response.write "<td width =" 15%"bgcolor = lightgrey> <a href =" fmjz1.asp? Id = "& rst2.fields (" id ") &" "
Target = "_ Blank"> "& rst2.fields (" xm ") y" </a> </td> "
Response.write "<td width =" 5%"bgcolor = lightgrey>" & rst2.fields ("sr") y "</td>"
Response.write "<td width =" 5%"bgcolor = lightgrey>" & rst2.fields ("zc") y "</td>"
Response.write "</tr>"
i = i+1
RST2.MoVENEXT
bucle
final si
Response.write "</table>"
Response.Write "</div>"
j = rst2.pageCount
Response.write "<P align = Center> <b> Número total de páginas:"
para i = 1 a j
Response.write "<a href =" fmjzpzck1.asp? Id = "& i &" "target =" _ en blanco ">" & i & "</a>" & ""
Si J mod 10 = 0 entonces
Response.Write "<br>"
final si
próximo
Response.write "</b> </p>"
RST2. CLOSE
CNN2. CLOSE
…………
final
Al aplicar los programas anteriores, las consultas personalizadas se pueden implementar de acuerdo con los permisos del usuario y de acuerdo con los requisitos del usuario. El sistema funciona y pasa en Win NT, IIS4.0, Win98 y PWS.
¿Ha aprendido cómo implementar el control de permisos jerárquicos en ASP? Si todavía no hay algo poco claro, consulte al editor del error y responderemos lo antes posible.