一、需求分析:
1、
一般的管理系统界面,即页面分为三个部分,上部是有关公司的图片信息,左边是树形菜单,左边是具体菜单对应的页面。
2、
1》、大权限:即控制不同角色用户看到不同的树形菜单,只能看到与该用户角色对
2》、小权限:即使某几种角色的拥有相同的左菜单权限。但是根据具体的角色再细
二、数据库设计:
根据以上要求,开始数据库设计,需要五个表:用户表、菜单树表、角色菜单表、页面表和子页面表
1、
色,或者是用户类型
2、
其中PageName列就是菜单对应的页面对应的类的名字,也就是页面类名
3、
该表记录了不同的用户类型对应的不同的菜单和菜单连接页面的增删改查权限,以后将根据该表来决定用户的权限。页面上的增删改查按钮的Enable属性将与这里的表值对应
4、
页面表
子页面表
三、代码设计与关键代码实现:
根据以上需求和数据库信息来实现系统架构设计。
1、做菜单控制比较简单,仅仅根据sql语句选择不同角色对应的不同树而已。
2、控制Session人性化。由于我们不能将session过时的异常信息直接呈现给客户,弄的客户一头雾水,不知所措。我们需要给客户人性化的
1》
页面的时候都需要判断,很麻烦,也容易忘记,尤其是公司一个团队开发的时候,某个程序员难免会忘记,以造成麻烦。
2》
也就是我让每个页面都继承一个BasePage类,而该类继承System.Web.UI.Page。该类需要重写基类的这个方法protected
3、
这里进行,并且在session没有过时的情况下(道理很简单,不再多说)。
1》、我们需要一个权限管理的类UserPrivilege。这个类有一个静态字段private
2》、已经基本准备好,但是这时候OnLoad方法里应该怎样做呢?这里要介绍一个技巧,就是怎样在获得派生类的名字呢?其实也很简单,就是利用this.GetType().Name
3》、我们如何把这个权限传递给具体的页面,这时候我们需要在基类中定义一个受保护的抽象方法protectedabstract
以上是一个思路,和一些关键代码,但没有详细代码,如果需要请email给我,但是现在我给大家一张图片,也许会更清晰一点
权限修改页面
该登录用户没有里面的添加权限
该用户没有添加和删除权限