手机版

ASP.NET控制HTML页面元素的权限(2)

时间:2021-11-12 来源:互联网 编辑:宝哥软件园 浏览:

这是权限控制的第一步。扫描接口获取要分配权限的元素的信息,并将其存储在数据库中。这一步分为三个小步骤:(1)。标记要分配权限的接口元素;(2).扫描界面,获取需要分配权限的元素信息。(ID、标题、层次关系)(3)存储在数据库中。1.标记要分配权限的接口元素。刚开始扫描的时候,我发现很难,因为HTML元素太多,层次关系也很多。一开始,用DIV标签来表示HTML中要分配权限的元素,发现这个方案行不通。例如,如果您添加了用户按钮和DIV,则此按钮的样式将会更改,并且必须调整样式。我现在做的KS系统有将近100个接口。此外,界面的样式已经确定,CSS也已经调整,如果添加div,就要重新调整界面。这个问题我想了两三天。最后,我考虑了是否要将一个HTML元素标签自定义为:box/box,在这个标签上添加一个ID和一个Title为:box ID=' AddID ' Title=" add button "/box,并使用这个标签来标记需要分配权限的元素。这样,可以在不改变样式的情况下获得所需的信息。

更改之后的界面后台代码为:复制代码代码如下:DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Transitional//EN ' ' http://www .w3。L1-过渡时期。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=仿真器7' /标题用户管理——查询用户/title脚本src='http:/./js/DIV/jquery。js/'脚本脚本src='http:/./js/DIV/DIV。js /脚本链接href='././CSS/admin . global . CSS“rel=”样式表type='text/css'/link href='././CSS/admin . content . CSS“rel=”样式表type=' text/CSS '/style type=' text/CSS ' .BTN中间{ width: 76px} /样式/头部正文表单id='表单'方法='post' runat='server' % - box标记主要的开始标记- % box id='main' title='主要div class='location '当前位置:用户管理-查询用户/div class=' blank 10 '/div %-box标记查询用户开始标记- % box id='QueryUser' title='查询用户div class=' search block ' div class=' h ' span class=' icon-sprite icon-放大镜/span h3快速搜索/H3/div class=' TL角div class=' tr角div class=' bl角div class=' br角/div class=' CNT-WP ' div class=' CNT ' div class='搜索栏'标签类='第一个txt-绿色'用户名:/标签输入值=' type=' text ' name=' username ' ID=' username ' class=' input-small '/ASP :链接按钮ID=' lbt query ' class=' BTN-lit ' runat=' server ' OnClick=' lbt query _ Click ' Width=' 58px ' span查询/span/asp:LinkButton % - box标记添加用户开始标记- % box id='AddUser' title='添加用户BTN照明的BTN中规中矩。 aspx ' span添加用户/span /a /box % - box标记添加用户结束标记-%/div/div/box-% box标记查询用户结束标记- % % -盒子标记用户列表开始标记- % box id='UserList' title='用户列表span class=' block ' div class=' TL corner '/div class=' tr corner '/div class=' bl corner '/div class=' br corner '/div class=' CNT-WP ' div class=' CNT ' div class=' h ' span class=' icon-sprite icon-list '/span H3用户列表/H3/div='空白10 '/div ASP :中继器ID=' rpUserInfo ' runat=' server ' ontimecommand=' rpUserInfo _ item command ' header template table class=' data-table history ' ID=' maintenance ' border=' 0 '单元格间距=' 0 '单元格填充=' 0 ' tr th scope=' col '用户名称/th作用域='col '角色/th作用域='col '操作记录/th作用域='col '编辑/th/tr/header template item template tr TD class=' txt 160 c ' % # Eval(' UserName ')%/TD TD TD class=' txt c ' % # Eval(' RoleName ')%/TD TD class=' txt 80 c ' a href=' AdmOperatorRecord '。 aspx?UserId=% # Eval(' UserNo ')% ' title='操作记录'操作记录/a/TD/TD class='图标' % -框标记编辑用户信息开始标记- % box id='EditUserInfo' title='编辑用户a class='opt' title='编辑href='AdmUpdateUser.aspx?UserId=% # Eval(' UserNo ')% ' span class=' icon-sprite icon-edit '/span/a/box %-box标记编辑用户信息结束标记-%/TD/tr/项目模板页脚模板/表格/页脚模板/asp:中继器/div/div/span span id=' span first '第一页/span span id='spanPre '上一页/span span id='spanNext '下一页/span span id='spanLast '最后一页/span第span id='spanPageNum'/span页/共span id='spanTotalPage'/span页/box % - box标记用户列表结束标记-%/盒% -盒标记主要的结束标记-%/表单/正文/html 2 .扫描界面获取所要分配权限的元素信息。由于界面上有了包厢这个元素来表示权限的元素,这样扫描起来就好一些了不过还是遇到了不少的问题,最终还是解决了,最难的是扫描出两个包厢之间的父子关系。

下面是射流研究…代码:复制代码代码如下:美元(文件)。ready(function(){ var root box=document。getelementbyid(' main ');var child=rootbox s .子节点;查找子框(child)});//搜寻子节点函数查找子框(parent node){ for(var I=0;I parent node . lengthi){///if(parent node[I]).nodeName==' BOX '){ var childBoxID=父节点[I].id;var childbox title=encodeURI(父节点[I]).标题);var父框=查找父框(父节点[I]).父节点);var父框id=父框。id;如果(窗口xmlhttprequest){//ie7 above,firefox,chrome^^ xmlhttp=new xmlhttprequest();//为了兼容部分Mozillar浏览器,当来自服务器响应开头不是xml,导致的无法响应问题if(xmlhttp。overridemimetype){ xmlhttp。override metype(' text/XML ');} } else if(窗口ActiveX对象){//IE5 \ IE6 xmlhttp=新的ActiveX对象(' Microsoft .XMLHTTP’);} if(xmlhttp==null | | xmlhttp==未定义){ alert(' con不创建XMLHttpRequest对象');} //注册回调函数xmlhttp.onreadystatechange=回调;//发送信息xmlhttp.open('GET ','././经理/角色经理/添加框。阿什克斯。child box id=' child box id ' child box title=' child box title ' parent box id=' parent box id,true);xmlhttp。发送(null);函数回调(){ //判断交互是否完成,是否正确返回if(xmlhttp。readystate==4 xmlhttp。status==200){ } } }查找子框(父节点[I].childNodes) } } //查询父节点函数查找父BOX(子){ if(子)。nodename==' BOX '){ return child;} else {返回查找父框(子。父节点)} } 3 .存入数据库中。利用创建交互式、快速动态网页应用的网页开发技术存入到数据库中,一开始就遇到了问题,因为扫描界面所需要的时间太短在还没有把第一条数据插入到数据库的时候第二条数据就来了这样导致了第一条数据的部分信息就会被第二条记录替代了导致存入数据库的数据出现了问题。一开始我是打算在射流研究…那里加上个延迟,结果表名不行。然后我就在一班程序里面加入一个类似锁的一个东西,算作延迟吧这样存入的数据就不会错误了下面是代码:复制代码代码如下:使用系统;使用系统。集合。通用;使用系统Linq .使用系统网络.利用BLL .经理。RoleUserManagerBull使用系统。数据;使用系统。文字;使用模型;使用BLL;命名空间考试系统3 .经理。role manager {///summary///addBox的摘要说明////摘要公共类AddBox : IHttpHandler { public void process request(HttpContext context){ context } .响应。内容类型='文本/纯文本;系统。线程。线程。睡眠(1000);diventy EDiv=new diventy AdmDivManager AdmDivManager=new AdmDivManager();public BLl public BLl=new public BLl();字符串strChildBoxId=字符串starchildbox title=starchildbox id=上下文请求。查询字符串[' childbox id '].ToString().trim();strChildBoxTitle=上下文。服务器UrlDecode(上下文请求。查询字符串['子框标题'].ToString().trim());字符串strParentBoxId=context .请求。查询字符串['parentboxId'].ToString().trim();字符串' strState='是;字符串strDateTime=publicBll .GetDate();string strIP=publicBll .GetWebClientIp();字符串strOperator=' xvshu//上下文。会话['用户号']。ToString().trim();EDiv .Id=strChildBoxIdEDiv .MainRelation=strparentBoxiidediv .DIVName=strChildBoxTitleEDiv .div description=Starchildbox标题;EDiv .运算符=strOperatorEDiv .OperatorIP=StrIngEDiv .State=strStateEDiv .DateTime=Strdatetimeadmdivmanager .addDiV(EDIv);} public bool IsReuse { get { return false;} } } } 利用TreeView控件显示出来如下图

版权声明:ASP.NET控制HTML页面元素的权限(2)是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。