ASP.NET HTML 페이지 요소 에 대한 권한 제어(2)

10821 단어 ASP.NET권한 제어
이것 은 이 권한 제어 의 첫 번 째 단계 입 니 다.스 캔 인터페이스 에서 권한 을 할당 할 요소 의 정 보 를 가 져 와 데이터베이스 에 저장 합 니 다.이 단 계 는 세 단계 로 나 뉜 다.(1)인터페이스 에서 권한 을 할당 할 요소(2)를 표시 합 니 다.인터페이스 를 스 캔 하여 권한 을 할당 할 요소 정 보 를 가 져 옵 니 다.(ID,제목,등급 관계)(3).데이터베이스 에 저장 합 니 다.1.인터페이스 에서 권한 을 할당 할 요 소 를 표시 합 니 다.스 캔 할 때 처음에 HTML 요소 가 너무 많 고 여러 단계 의 관계 가 있 기 때문에 어렵 습 니 다.처음에
태그 로 HTML 이 할당 할 권한 을 나타 내 는 요 소 를 사 용 했 는데 이 방안 이 안 되 었 습 니 다.예 를 들 어 사용자 버튼 에 DIV 를 추가 하면 이 버튼 의 스타일 이 바 뀌 고 스타일 도 바 뀌 어야 합 니 다.제 가 지금 하고 있 는 KS 시스템 은 100 개 에 가 까 운 인터페이스 가 있 습 니 다.게다가 현재 의 경계 면 은 스타일 이 정 해 져 있 고 CSS 를 조정 하고 DIV 를 더 하면 화면 을 다시 조정 해 야 합 니 다.이 문제 에 대해 2,3 일 동안 생각 했 습 니 다.마지막 으로 저 는 HTML 요소 라벨 을'box','box','/box'로 정의 하지 않 고 이 태그 에 ID 와 Title 을'box id='AddID'Title='버튼 추가','/box'로 지정 하고 권한 을 할당 할 요 소 를 이 태그 로 표시 할 생각 입 니 다.이렇게 하면 스타일 을 바 꾸 지 않 아 도 필요 한 정 보 를 얻 을 수 있다.변 경 된 인터페이스 배경 코드 는:
 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="Author" content="[email protected]" />
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" />
<title> ―― </title>

<script src="../../js/DIV/jquery.js"></script>
<script src="../../js/DIV/DIV.js"></script>
<link href="../../css/admin.global.css" rel="stylesheet" type="text/css" />
<link href="../../css/admin.content.css" rel="stylesheet" type="text/css" />

<style type="text/css">
.btn-middle {
width: 76px;
}
</style>

</head>
<body>
<form id="Form" method="post" runat="server" >
<%--box main --%>
<box id="main" title=" ">
<div class="location"> : -> </div>

<div class="blank10"></div>
<%--box QueryUser --%>
<box id="QueryUser" title=" ">
<div class="search block" >
<div class="h">
<span class="icon-sprite icon-magnifier"></span>
<h3> </h3>
</div>
<div class="tl corner"></div>
<div class="tr corner"></div>
<div class="bl corner"></div>
<div class="br corner"></div>
<div class="cnt-wp">
<div class="cnt">
<div class="search-bar">
<label class="first txt-green"> :</label>
<input value="" type="text" name="username" id="username" class="input-small" />


<asp:LinkButton ID="lbtQuery" class="btn-lit" runat="server"
OnClick="lbtQuery_Click" Width="58px"><span > </span></asp:LinkButton>

<%--box AddUser --%>
<box id="AddUser" title=" ">
<a class="btn-lit btn-middle" href="AdmAddUser.aspx">
<span> </span>
</a>
</box>
<%--box AddUser --%>
</div>
</div>
</div>
</div>
</box>
<%--box QueryUser --%>

<%--box UserList --%>
<box id="UserList" title=" ">
<span class="block">
<div class="tl corner"></div>
<div class="tr corner"></div>
<div class="bl corner"></div>
<div class="br corner"></div>
<div class="cnt-wp">
<div class="cnt">
<div class="h">
<span class="icon-sprite icon-list"></span>
<h3> </h3>
</div>
<div class="blank10"></div>

<asp:Repeater ID="rpUserInfo" runat="server" onitemcommand="rpUserInfo_ItemCommand">
<HeaderTemplate>
<table class="data-table history" id="mainTable" border="0" cellspacing="0" cellpadding="0">
<tr>
<th scope="col"> </th>
<th scope="col"> </th>
<th scope="col"> </th>
<th scope="col"> </th>
</tr>
</HeaderTemplate>
<ItemTemplate>
<tr>
<td class="txt160 c"><%#Eval("UserName")%></td>
<td class="txt c"><%#Eval("RoleName")%></td>
<td class="txt80 c"><a href="AdmOperatorRecord.aspx?UserId=<%#Eval("UserNo") %>" title=" "> </a></td>
<td class="icon">
<%--box EditUserInfo --%>
<box id="EditUserInfo" title=" ">
<a class="opt" title=" " href="AdmUpdateUser.aspx?UserId=<%#Eval("UserNo") %>">
<span class="icon-sprite icon-edit">
</span>
</a>
</box>
<%--box EditUserInfo --%>
</td>
</tr>
</ItemTemplate>
<FooterTemplate>
</table>
</FooterTemplate>
</asp:Repeater>
</div>
</div>
</span>
<span id="spanFirst"> </span> <span id="spanPre"> </span> <span id="spanNext"> </span> <span id="spanLast"> </span> <span id="spanPageNum"></span> / <span id="spanTotalPage"></span>
</box>
<%--box UserList --%>
</box>
<%--box main --%>
</form>
</body>
</html>
2.인터페이스 를 스 캔 하여 권한 을 할당 할 요소 정 보 를 얻 습 니 다.인터페이스 에라 는 요소 가 있어 서 권한 을 나타 내 는 요 소 를 스 캔 하면 좋 겠 지만 많은 문제 에 부 딪 혔 습 니 다.결국 해결 되 었 습 니 다.가장 어 려 운 것 은 두간 의 부자 관 계 를 스 캔 하 는 것 입 니 다.다음은 JS 코드 입 니 다
 
$(document).ready(function () {

var rootboxs = document.getElementById("main");
var child = rootboxs.childNodes;
findchildbox(child)


});
//
function findchildbox(parentNode) {

for (var i = 0; i < parentNode.length; i++) {
///
if (parentNode[i].nodeName == "BOX") {

var childboxId = parentNode[i].id;
var childboxTitle = encodeURI(parentNode[i].title);
var parentbox = findparentbox(parentNode[i].parentNode);
var parentboxId = parentbox.id;
if (window.XMLHttpRequest) {
//IE7 above,firefox,chrome^^
xmlhttp = new XMLHttpRequest();
// Mozillar , xml,
if (xmlhttp.overrideMimeType) {
xmlhttp.overrideMimeType('text/xml');
}
}
else if (window.ActiveXObject) {
//IE5\IE6
xmlhttp = new activeXObject("Microsoft.XMLHTTP");
}
if (xmlhttp == null || xmlhttp == undefined) {
alert("con't create XMLHttpRequest Object");
}
//
xmlhttp.onreadystatechange = callback;
//

xmlhttp.open('GET', '../../Manager/RoleManager/AddBox.ashx?childboxId=' + childboxId + '&childboxTitle=' + childboxTitle + '&parentboxId=' + parentboxId, true);
xmlhttp.send(null);


function callback() {
// ,
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {

}
}

}

findchildbox(parentNode[i].childNodes)

}

}

//
function findparentbox(child) {

if (child.nodeName == "BOX") {
return child;
} else {
return findparentbox(child.parentNode)

}

}
데이터베이스 에 저장 합 니 다.AJAX 를 이용 해 데이터베이스 에 저장 하 다 보 니 처음부터 문제 가 생 겼 다.스 캔 인터페이스 에 걸 리 는 시간 이 너무 짧 아 첫 번 째 데 이 터 를 데이터베이스 에 삽입 하기 도 전에 두 번 째 데이터 가 왔 기 때문에 첫 번 째 데이터 의 일부 정 보 는 두 번 째 기록 으로 대체 되 어 데이터베이스 에 저 장 된 데이터 에 문제 가 생 겼 다.처음에는 JS 에 지연 을 넣 으 려 고 했 는데 표 이름 이 안 됐어 요.그리고 저 는 한 프로그램 에 자물쇠 와 비슷 한 것 을 넣 었 습 니 다.지연 이 라 고 할 수 있 습 니 다.이렇게 저 장 된 데 이 터 는 틀 리 지 않 습 니 다.다음은 코드 입 니 다
 
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using BLL.Manager.RoleUserManagerBLL;
using System.Data;
using System.Text;
using Model;
using BLL;

namespace ExamSystemV3.Manager.RoleManager
{
/// <summary>
/// AddBox
/// </summary>
public class AddBox : IHttpHandler
{

public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "text/plain";
System.Threading.Thread.Sleep(1000);
DIVEntity EDiv = new DIVEntity();
AdmDIVManager admDIVManager = new AdmDIVManager();
PublicBLL publicBll = new PublicBLL();
string strChildBoxId = "";
string strChildBoxTitle = "";

strChildBoxId = context.Request.QueryString["childboxId"].ToString().Trim();
strChildBoxTitle = context.Server.UrlDecode(context.Request.QueryString["childboxTitle"].ToString().Trim());
string strParentBoxId=context.Request.QueryString["parentboxId"].ToString ().Trim();;
string strState = " ";
string strDateTime = publicBll.GetDate();
string strIP = publicBll.GetWebClientIp();
string strOperator ="xvshu";//context.Session["UserNo"].ToString().Trim(); ;
EDiv.Id = strChildBoxId;
EDiv.MainRelation = strParentBoxId;
EDiv.DIVName = strChildBoxTitle;
EDiv.DIVDescribe = strChildBoxTitle;
EDiv.Operator = strOperator;
EDiv.OperatorIP = strIP;
EDiv.State = strState;
EDiv.DateTime = strDateTime;
admDIVManager.AddDIV(EDiv);
}

public bool IsReusable
{
get
{
return false;
}
}
}
}
TreeView 컨트롤 을 이용 하여 다음 과 같은 그림 을 보 여 줍 니 다

좋은 웹페이지 즐겨찾기