权限设计功能权限数据权限_第1页
权限设计功能权限数据权限_第2页
权限设计功能权限数据权限_第3页
权限设计功能权限数据权限_第4页
权限设计功能权限数据权限_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

9/9网络管理系统-权限管理权限描述 1为什么要有权限管理 1本项目中的权限管理 1权限设计 2名词解释: 2权限系统的核心由以下三部分构成:制造权限,安排权限,使用权限 2数据库结构设计 3权限执行步骤 3MSDN说明:ASP.NET母版页和内容页中的大事 3项目步骤说明 4权限代码实现 4第一步:检测登陆和合法Url(BaseMasterPage) 4其次步:加载资源和功能菜单加载(MasterPage) 6第三步:将资源转化为属性,和错误记录(BasePage) 7第四步,第五步:页面初始化数据,进行绑定(资源管理-EditNodeInfo.aspx为例)(Page): 8权限描述为什么要有权限管理权限管理是Web应用项目中比较关键的环节,由于扫瞄器是每一台计算机都已具备的,如果不建立权限管理系统,那么一个“非法用户”可以轻而易举通过扫瞄器访问Web应用项目中的全部功能,资源。因此需要权限管理系统进行权限检测,让经过授权的用户可以正常合法的使用已授权的功能,资源,而对那些未授权的非法用户拒之门外。本项目中的权限管理本项目中的权限管理总的可以分为功能管理和资源管理。在这里我定义了以下关系:权限=功能+资源,在后续消失的权限均指代的是功能+资源功能管理中的功能体现到本系统中就是对应一个网页(url),或网页中的一个按钮资源管理中的资源就是本系统中需要用权限约束的资源对象,包括链路、节点、设备,事务等信息。权限设计名词解释:SystemUsers:系统用户,使用功能,资源的平台用户。Groups:用户组,功能,资源安排的单位与载体。权限不考虑安排给特定的用户而给组。Roles:角色,肯定数量的功能的集合。功能安排的单位与载体,目的是隔离系统用户(SystemUsers)与权限功能(FunUrl)的规律关系.

权限系统的核心由以下三部分构成:制造权限,安排权限,使用权限1)创建权限:分两步,1创建功能;2创建资源创建功能:Creator制造功能,Creator在设计和实现系统时会分析,一个子系统或称为模块,应该有哪些功能,然后将这些功能注册到相应系统模块中,这里实现就是对Url分别注册到FunUrl中创建资源:Creator制造资源,Creator

在设计和实现系统时会分析系统中需要被约束的资源有哪些,然后针对每一种资源,都建立一个组,资源关系表。2)安排权限:分两步,1功能安排;2资源安排a.功能安排:Administrator创建角色,创建用户组,给用户组安排用户,将用户组与角色关联,然后Administrator将功能与角色建立关联关系。这样就可以达到功能安排,这些操作都由Administrator来完成的。b.资源安排:Administrator利用组,资源关系表,然后将组和各种资源分别建立关联关系,这样就可以达到资源安排3)使用权限:SystemUsers使用Administrator安排给的权限去使用各个子系统。数据库结构设计权限执行步骤MSDN说明:ASP.NET母版页和内容页中的大事母版页和内容页都可以包含控件的大事处理程序。对于控件而言,大事是在本地处理的,即内容页中的控件在内容页中引发大事,母版页中的控件在母版页中引发大事。控件大事不会从内容页发送到母版页。同样,也不能在内容页中处理来自母版页控件的大事。在某些情况下,内容页和母版页中会引发相同的大事。例如,两者都引发

Init

Load

大事。引发大事的一般规章是初始化大事从最里面的控件向最外面的控件引发,全部其他大事则从最外面的控件向最里面的控件引发。请记住,母版页会合并到内容页中并被视为内容页中的一个控件,这一点十分有用。下面是母版页与内容页合并后大事的发生挨次:母版页控件

Init

大事。内容控件

Init

大事。母版页

Init

大事。内容页

Init

大事。内容页

Load

大事。母版页

Load

大事。内容控件

Load

大事。内容页

PreRender

大事。母版页

PreRender

大事。母版页控件

PreRender

大事。内容控件

PreRender

大事。母版页和内容页中的大事挨次对于页面开发人员并不重要。但是,如果您创建的大事处理程序取决于某些大事的可用性,那么您将发现,了解母版页和内容页中的大事挨次很有帮助。项目步骤说明1.BaseMasterPageinit()//一级验证(登陆,功能url)2.MasterPageinit()//二级验证(功能加载,数据加载)3.BasePageinit()//将加载的数据重新整理为属性,错误日志记录4.Pageinit()//页面中的初始化5.PageLoad()说明:页面开头执行时,1.先调用MasterPageInit(),而MasterPageInit()在调用BaseMasterPageInit().2.调用PageInit(),而PageInit()在调用BasePageInit()3.pageload()这样就形成了上面的五步的验证挨次权限代码实现第一步:检测登陆和合法Url(BaseMasterPage)protectedvoidvalidate(){Stringroot=ResolveUrl("~");root=root.Substring(0,root.Length-1);//获得网站主名目if(object.Equals(null,Session[SessionKeys.UserId]))//登陆检测{stopCache();Response.Write("<script>alert('对不起!你没有登录系统或登录超时,请重新登录');top.location.href='../Login.aspx';</script>");}else{//功能检测stringurl=Request.AppRelativeCurrentExecution('~');IListfunList=FunctionAgent.GetFunIdByUrl(url);if(funList.Count==0){//检测到功能(Url)不存在,给予提示Response.Write("<script>alert('系统中没有添加此页面!');top.location.href='"+root+Session[SessionKeys.CurrentUrl].ToString()+"';</script>");Response.End();}else{boolstatus=false;foreach(FunurlInfofinfunList){IListRolesId=Session[SessionKeys.RolesId]asIList;//获得角色if(RolesId!=null){//检测是否有访问的权限status=FunctionAgent.EqualByRoleIdAndFunId(RolesId,f.Funid.ToString());}if(status)break;//如果存在就进入访问}if(!status&&Session[SessionKeys.CurrentUrl]!=null){//没有权限就不能进入Response.Write("<script>alert('您没有访问此页面的权限!');top.location.href='"+root+Session[SessionKeys.CurrentUrl].ToString()+"';</script>");}else{if(Session[SessionKeys.CurrentUrl]==null){Response.Redirect("~/Login.aspx");}else{Session[SessionKeys.CurrentUrl]=url;//将当前页面记录下来}}}其次步:加载资源和功能菜单加载(MasterPage)功能菜单加载:<uc3:TreeControlID="TreeControl1"runat="server"FunId="2"ExpandDepth="2"Width="234px"CssClass="leftmenu02"MoudleName="ResourceManage"/>其中TreeControl为用户控件:privatevoidBindTree(){DataSettreeDataSet=null;IListroleId=Session[SessionKeys.RolesId]asIList;//获得角色if(roleId!=null){if(object.Equals(Session[MoudleName],null)){Session[MoudleName]=FunctionAgent.Get2MenuFunList(roleId,FunId.ToString());}treeDataSet=Session[MoudleName]asDataSet;if(treeDataSet!=null){addNodes(tv2Menu.Nodes,treeDataSet,FunId);}}}privatevoidaddNodes(TreeNodeCollectioncollection,DataSettreeDataSet,intparentNodeID){DataRow[]rows=treeDataSet.Tables["menuDataTable"].Select("paranetFunId="+parentNodeID);//查找当前结点的全部子结点foreach(DataRowrowinrows){//新建一个临时结点TreeNodenode=newTreeNode();node.Value=row["funId"].ToString();node.Text=row["urlName"].ToString();node.NavigateUrl=row["url"].ToString();stringpid=row["url"].ToString();node.Expanded=true;//默认为展开//递归加入当前结点的子结点addNodes(node.ChildNodes,treeDataSet,int.Parse(row["funId"].ToString()));collection.Add(node);//加入到结点集合中}}加载资源:protectedoverridevoidOnInit(EventArgse){base.OnInit(e);if(object.Equals(Session[SessionKeys.NodesId],null)){IListgroupsId=Session[SessionKeys.GroupsId]asIList;if(groupsId!=null){Session[SessionKeys.NodesId]=ResourceAgent.GetNodeIdsByGroupIds(groupsId);//初始化节点资源Session[SessionKeys.LinksId]=ResourceAgent.GetLinkIdsByGroupIds(groupsId);//初始化链路资源Session[SessionKeys.EquipmentsId]=ResourceAgent.GetEquipmentIdsByGroupIds(groupsId);//初始化设备资源Session[SessionKeys.PortsId]=ResourceAgent.GetPortIdsByGroupIds(groupsId);//初始化端口资源}}}第三步:将资源转化为属性,和错误记录(BasePage)protectedoverridevoidOnInit(EventArgse){UserId=GetFromSession(SessionKeys.UserId)asstring;NodesId=GetFromSession(SessionKeys.NodesId)asIList;LinksId=GetFromSession(SessionKeys.LinksId)asIList;EquipmentsId=GetFromSession(SessionKeys.EquipmentsId)asIList;PortsId=GetFromSession(SessionKeys.PortsId)asIList;TransTypeIds=GetFromSession(SessionKeys.TransTypeIds)asIList;PageName=Request.RawUrl;UserIp=Request.UserHostAddress.ToString();base.OnInit(e);}protectedvirtualvoidShowMessage(DcExceptiondex)//错误处理{dex.UserId=UserId;dex.PageName=PageName;dex.UserIp=UserIp;if(string.IsNullOrEmpty(dex.Msg)){dex.Msg=dex.Message;}if(dex.ErrorType==MessageType.Warning){ShowMessage(dex.Msg);}else{if(dex.Msg.Equals("正在中止线程。")||dex.Msg.Equals("Threadwasbeingaborted.")){return;}Log.Error(dex.ToString());//记录错误信息//迁移到错误页面stringerrPageUrl=ConfigurationManager.AppSettings["ErrorPageUrl"];

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论