为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

让菜单充满活力ASP NET根据角色动态分配菜单+权限

2018-04-27 7页 doc 144KB 29阅读

用户头像

is_270070

暂无简介

举报
让菜单充满活力ASP NET根据角色动态分配菜单+权限让菜单充满活力ASP NET根据角色动态分配菜单+权限 pd4ml evaluation copy. visit ???? 这次做图书馆维护系统首先要解决的问题就是角色权限动态分配权限分配直接体现就是菜单的动态分配。在此和大家分享一下心得。???? 大多数系统都有多种类型的用户不同的用户权限不同某一个功能类用户是可见的但是B类用户没有必要或者不应该看见这个功 能这就要涉及到功能的动态分配。要解决这个问题当然要从数据下手在学姐的指导下有了如下的UML设计图解释一下表是用户类型表。 SystemFunction表是系统所有...
让菜单充满活力ASP NET根据角色动态分配菜单+权限
让菜单充满活力ASP NET根据角色动态分配菜单+权限 pd4ml evaluation copy. visit ???? 这次做图书馆维护系统首先要解决的问就是角色权限动态分配权限分配直接体现就是菜单的动态分配。在此和大家分享一下心得。???? 大多数系统都有多种类型的用户不同的用户权限不同某一个功能类用户是可见的但是B类用户没有必要或者不应该看见这个功 能这就要涉及到功能的动态分配。要解决这个问题当然要从数据下手在学姐的指导下有了如下的UML设计图解释一下是用户类型表。 SystemFunction表是系统所有功能表了功能的名称和对应的页面思想 是一个功能即一个页面。Tab表是菜单表也就是顶级菜单表中的功能将被归类到这个菜单中。MemberFunction表是用户功能表这个表负责连接 MemberType表和Tab表通过武汉大学pd4ml evaluation copy. visit 这个表可以得知何种用户有哪些菜单。TabFunction是菜单功能表负责连接Tab表 和SystemFunction表通过这个表可以得知何种菜单有哪些功能。???? 这种设计遵 守了三范式设计原则使用起来非常方便。假如我们要给某种类型的用户增加一种菜单增加一种权限只需要在MemberFunction表中建立一个连接即可添加一条记录字段值分别是该类型用户的id和对应菜单的ID。给某个菜单添加某个功能也是如此。这样一来管理起来非常方便只需要添加或删除MemberFunction表和TabFunction表中的记录就可以达到灵活分配用户拥有的菜单、灵活分配菜单中的功能。???? 结合我们还需要把这种数据库表示转换成界面表示。在D层必须借助于下边两个存储过程-----------------------------用户身份类型对应顶 级菜单表存储过程-------------------------------//选取某种用户顶级菜单/CREATE PROCEDURE proc_MemberFunction_SelectByTypeIDmemberTypeID bigintASBEGINselect t_MemberFunction.t_Tab.name from t_MemberFunctionjoin t_Tab on t_Tab.idt_MemberFunction.tabIDwhere memberTypeIDmemberTypeIDENDGO/-----------------------------顶级菜单选项卡功能 表存储过程-------------------------------//选取某种顶级菜单的下属功能/CREATE PROCEDURE proc_TabFunction_SelectTabFunctiontabID bigintASBEGINselect t_TabFunction.t_SystemFunction.namet_SystemFunction.pageURL from t_TabFunctionjoin t_SystemFunction on t_SystemFunction.idt_TabFunction.systemFunctionIDwheretabIDtabIDEND???? 有了 这两个存储过程就可以读出所有的菜单数据。接下来就要在界面上显示一般情况下界面上的菜单都是胾l和li标签然后用javascript加以控制在这一级菜单就 可以满足我们的需求类似下边这个结构: 个人管理让菜单充满活力根据角色动态分配菜单权限武汉大学pd4ml evaluation copy. visit 查看 信息修改密码???? 不难看出个人管理的位置就是顶级菜单查看信息、修改密码的位置是具体功能很明显的一个嵌套结构把上边的代码保存成html文件打开看看就知道是啥样的结构了。在界面上绑定数据轻量级的repeater控件是非常不错的选择具体怎么用就不赘述了。要用repeater控件显示出上边提到的结构就必须进行repeater控件的嵌套。那么如何在ASP.NET中嵌套repeater控件呢注以下代码都是针对于本文的数据库如果您想用要改一改起码要改改读取的字段。。。aspx前台文件代码aspx.cs后台文件代码//外层repeater数据绑定DataTable dt new DataTabledt menumanager.getMemberFunctionConvert.ToInt64Request.QueryStringmemberTypeID. ToStringmenuRepeater.DataSource dtmenuRepeater.DataBind//内层repeater数据绑定 protected void menuRepeater_ItemDataBoundobject sender System.Web.UI.WebControls.RepeaterItemEventArgs e DataTable dt new DataTable 让菜单充满活力根据角色动态分配菜单权限武汉大学pd4ml evaluation copy. visit Repeater functionRepeater Repeatere.Item.FindControlfunctionRepeater //找到内层的repeater控件 DataRowView rowv DataRowViewe.Item.DataItem dt menumanager.getTabFunctionConvert.ToInt64rowvtabID //读取上一层repeater控件中 保存的菜单并且根据该id去读取菜单下的功能 //绑定数据 functionRepeater.DataSource dt functionRepeater.DataBind???? repeater嵌套就是这 么简单需要注意的是在外层repeater上注册的是onitemdatabound事件也就是 itemtemplate模版数据绑定事件千万不要理解成是repeater的绑定事件。然后在用 onitemdatabound注册的menuRepeater_ItemDataBound事件中去绑定内层repeater控 件的数据就可以了。???? 细心的读者可能会发现在aspx前台代码中调用了一个 setSession函数这个函数就是就是分配权限用的。函数内容 setSessionstring pageName SessionPagePermissions SessionPagePermissions.ToString pageName.Splitnew char1.0 return pageName???? 这么简单的一个小函数是如何做 到分配权限的呢地球人都知道即使我们没有给X类型的用户显示某个功能页面 但这个页面是确确实实存在的只是没有让X看到而已假如X用户手动访问这 个页面如果显示出来了不就乱了吗通过这个函数我们可以获取所有的页面名 称把他们拼接成一个字符串保存到session中然后在每个页面的pageLoad事件 中都检查这个看看这个session中有没有自己的名称如果没有就跳转到 错误页面如果有就显示。这样一来菜单分配和权限分配就一块搞定了方便 简洁至此一个ASP.NET根据角色动态分配菜单权限的例子就讲完了但 是做完这个工程之后我发现这样还不是很好经过仔细的分析这样的数据库设计 可以用下边这张图表示让菜单充满活力根据角色动态分配菜单权限 武汉大学pd4ml evaluation copy. visit 让菜单充满活力根 据角色动态分配菜单权限武汉大学
/
本文档为【让菜单充满活力ASP NET根据角色动态分配菜单+权限】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索