千家信息网

ASP.NET如何对HTML页面元素进行权限控制

发表于:2025-01-28 作者:千家信息网编辑
千家信息网最后更新 2025年01月28日,这篇文章主要介绍"ASP.NET如何对HTML页面元素进行权限控制",在日常操作中,相信很多人在ASP.NET如何对HTML页面元素进行权限控制问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作
千家信息网最后更新 2025年01月28日ASP.NET如何对HTML页面元素进行权限控制

这篇文章主要介绍"ASP.NET如何对HTML页面元素进行权限控制",在日常操作中,相信很多人在ASP.NET如何对HTML页面元素进行权限控制问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"ASP.NET如何对HTML页面元素进行权限控制"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

这是这个权限控制的第一步,扫描界面把要分配权限的元素的信息获取出来存入到数据库中。

这一步分三小步:

(1).标出界面所要分配权限的元素

(2).扫描界面获取所要分配权限的元素信息。(ID,标题,层级关系)

(3).存入数据库中。

1.标出界面所要分配权限的元素.

在扫描的时候一开始我觉得很难因为HTML元素过多又有很多层级关系。一开始用的是

标签来表示HTML所要分配权限的元素,发现这个方案不行,比如把添加用户按钮加上DIV那么这个按钮的样式就变了还得调样式我现在做的KS系统有将近100个界面,再加上现在的界面已经确定好样式,调好CSS,加上再加上DIV的话那么得重新调界面,就这个问题想了两三天,最后我想到要不自定义一个HTML元素标签为:为这个标签加上ID和Title为:,用这个标签来标记所要分配权限的元素。这样的话既不用更改样式又能获取到所要的信息。更改之后的界面后台代码为:

复制代码 代码如下:








用户管理--查询用户











<%--box标记 main 开始标记--%>

当前位置:用户管理 -> 查询用户



<%--box标记 QueryUser 开始标记--%>



<%--box标记 QueryUser结束标记--%>

<%--box标记 UserList开始标记--%>










用户列表
























用户名称角色操作记录编辑
<%#Eval("UserName")%><%#Eval("RoleName")%>" title="操作记录">操作记录
<%--box标记 EditUserInfo开始标记--%>

">




<%--box标记 EditUserInfo结束标记--%>






第一页 上一页 下一页 最后一页页/共

<%--box标记 UserList 结束标记--%>

<%--box标记 main 结束标记--%>





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][xss_clean]);
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[xss_clean])

}

}


3.存入数据库中。

利用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
{
///


/// AddBox 的摘要说明
///

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控件显示出来如下图:

到此,关于"ASP.NET如何对HTML页面元素进行权限控制"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!

元素 权限 数据 界面 代码 用户 分配 信息 数据库 问题 控制 页面 标签 样式 学习 查询 不行 层级 按钮 时候 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 服务器数据库租用 计算机网络安全技术4答案 服务器磁盘有一个不显示 英雄联盟东欧是什么服务器 网络安全技能大赛理论题库 学校查重数据库在哪看 成都软件开发培训班价格 网络安全建设效果 妄想山海捏脸数据库在哪里 华夏恒生科技互联网etf手续费 中山市红极互联网科技 物业公司网络安全管理制度 同花顺vip专线服务器不卡 redis集群云服务器配置 中科大网络安全作业 世界互联网大会新技术黑科技 网络安全新挑战三板斧 服务器中WCF服务器起不来 成都蓉呗互联网科技有限公司 泰拉瑞亚内网穿透服务器搭建 云服务器带宽如何计算 软件开发是上的什么大学 石狮辛巴网络技术 电脑软件开发知识 网络技术继续教育科目 广东软件开发解决方案代理 win7 文件共享服务器 计算机网络技术的单招面试 网络安全技术的电子书下载 软件开发测试环境都有什么
0