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

本文介绍了一种在ASP.NET中实现角色动态分配菜单和权限的方法,通过数据库设计和存储过程,配合JavaScript和Session来控制用户界面的显示。文章讨论了如何在数据库中设计表结构,以及如何在界面上使用Repeater控件进行嵌套,以实现菜单的动态展示。此外,还提出了优化方案,简化多级菜单的管理。
摘要由CSDN通过智能技术生成

   这次做图书馆维护系统,首先要解决的问题就是角色权限动态分配,权限分配直接体现就是菜单的动态分配。在此和大家分享一下心得。

   大多数系统,都有多种类型的用户,不同的用户权限不同,某一个功能,A类用户是可见的,但是B类用户没有必要或者不应该看见这个功能,这就要涉及到功能的动态分配。要解决这个问题,当然要从数据下手,在学姐的指导下,有了如下的UML设计图:

解释一下:

MemberType表是用户类型表。

SystemFunction表是系统所有功能表,记录了功能的名称和对应的页面URL,思想是一个功能即一个页面。

Tab表是菜单表,也就是顶级菜单,SystemFunction表中的功能将被归类到这个菜单中。

MemberFunction表是用户功能表,这个表负责连接MemberType表和Tab表,通过这个表可以得知何种用户有哪些菜单。

TabFunction是菜单功能表,负责连接Tab表和SystemFunction表,通过这个表可以得知何种菜单有哪些功能。

   这种设计遵守了三范式设计原则,使用起来非常方便。假如我们要给某种类型的用户增加一种菜单(增加一种权限),只需要在MemberFunction表中建立一个连接即可:添加一条记录,字段值分别是该类型用户的id和对应菜单的ID。给某个菜单添加某个功能也是如此。这样一来,管理起来非常方便,只需要添加或删除MemberFunction表和TabFunction表中的记录,就可以达到灵活分配用户拥有的菜单、灵活分配菜单中的功能。

   结合ASP.NET,我们还需要把这种数据库表示转换成界面表示。在D层,必须借助于下边两个存储过程:

GO
/*-----------------------------用户身份(类型)对应顶级菜单表存储过程-------------------------------*/
/*选取某种用户顶级菜单*/
CREA
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值