Asp.Net 下的权限管理

Asp.Net 下的权限管理

(2013-01-05 08:05:31)
标签:

权限管理

it

分类: 软件开发

一、需求分析:

1、  页面结构:

一般的管理系统界面,即页面分为三个部分,上部是有关公司的图片信息,左边是树形菜单,左边是具体菜单对应的页面。

2、  权限分析:结合客户的意思和实际经验,将权限分为两部分:

1》、大权限:即控制不同角色用户看到不同的树形菜单,只能看到与该用户角色对

        应的菜单权限

2》、小权限:即使某几种角色的拥有相同的左菜单权限。但是根据具体的角色再细

        分,控制在菜单对应的具体页面上有不同的增、删、改、差权限

       3、控制Session过时的人性化

 

二、数据库设计:

扫描二维码关注公众号,回复: 2892541 查看本文章

根据以上要求,开始数据库设计,需要五个表:用户表、菜单树表、角色菜单表、页面表和子页面表

1、  用户表:除了包含用户的基本信息,其中还有一列是‘Role’列,代表该用户的角

色,或者是用户类型

2、  菜单树表:如下图

 

其中PageName列就是菜单对应的页面对应的类的名字,也就是页面类名

3、  角色菜单表:应该是用户表和菜单树表的一个间接中间表,如下图

 

该表记录了不同的用户类型对应的不同的菜单和菜单连接页面的增删改查权限,以后将根据该表来决定用户的权限。页面上的增删改查按钮的Enable属性将与这里的表值对应

 

 

4、  页面表和子页面表:这里为什么说子页面表,我这里子页面表的定义是相对页面表来说的,因为页面表上有一些增删改差按钮,点击这些按钮的时候,我让他转到(或弹出)另一个页面去操作,那么这些页面就成为子页面。如下图:

 

页面表

 

子页面表

三、代码设计与关键代码实现:

根据以上需求和数据库信息来实现系统架构设计。

1、做菜单控制比较简单,仅仅根据sql语句选择不同角色对应的不同树而已。

2、控制Session人性化。由于我们不能将session过时的异常信息直接呈现给客户,弄的客户一头雾水,不知所措。我们需要给客户人性化的  提示信息。

1》  解决方案一:在每个页面判断session,这是可以的。但是需要我们在进入每个

页面的时候都需要判断,很麻烦,也容易忘记,尤其是公司一个团队开发的时候,某个程序员难免会忘记,以造成麻烦。

2》  解决方案二:这也是我自认为最好的解决方案,如果有更好的方案,请将你的方案发到我的邮箱,我将感激不尽。

也就是我让每个页面都继承一个BasePage类,而该类继承System.Web.UI.Page该类需要重写基类的这个方法protected override void OnLoad(EventArgs e),这个方法的功能是在加载每个页面前都要先执行这个方法,一切的判断都放在这个方法里面进行,当session过时的时候,就跳到提示页面,否则进行其他判断(例如页面的增删改查权限)然后响应浏览器端的请求。

3、  控制每个页面的增删改查权限:由于OnLoad方法的功能,我们将这个操作也放在

这里进行,并且在session没有过时的情况下(道理很简单,不再多说)。

1》、我们需要一个权限管理的类UserPrivilege。这个类有一个静态字段private staticDataTable tablePrivilege,它相当于一个Application类型的全局变量,当第一个用户登陆进来后就已经初始化。它是一个表,保存了所有用户类型对应的页面类名字和响应的增删改差权限,我么以后的判断都是对这个变量进行操作。如果某个用户修改了权限表,那么这个变量也将立即更改

2》、已经基本准备好,但是这时候OnLoad方法里应该怎样做呢?这里要介绍一个技巧,就是怎样在获得派生类的名字呢?其实也很简单,就是利用this.GetType().Name 来获取当前成员的名字,但是这个名字与我们的页面类名是有一点不同的,就是在我们的页面类名字后加了个‘_aspx’后缀,这个信息对我们来说是很宝贵的,可以据此来获得类的名字,不在介绍根据用户类型(用户登录的时候,我们已经将用户的角色类型保存到session里了)和该页面类的名字和UserPrivilege类中的静态字段tablePrivilege就可以轻松获得该用户在该页面的具体权限。

3》、我们如何把这个权限传递给具体的页面,这时候我们需要在基类中定义一个受保护的抽象方法protectedabstract void SetButtonEnable();那么继承该类的所有页面都必须实现这个方法,然后基类调用这个方法即可

以上是一个思路,和一些关键代码,但没有详细代码,如果需要请email给我,但是现在我给大家一张图片,也许会更清晰一点

 

权限修改页面

 

该登录用户没有里面的添加权限

 

该用户没有添加和删除权限

  • 含“”的博文
  • 含“”的博主
  • 含“”的音乐
  • 含“”的视频
最近喜欢了的博主:
加载中…
为了您的账号安全,请 绑定邮箱

猜你喜欢

转载自blog.csdn.net/chpswg/article/details/17282491
今日推荐