asp.net后台权限管理
时间:2010-08-20 来源:蓝丶 sky
后台权限管理,其实当做过了,了解自己熟悉的模式以后,在做就老马识路了。当然这个有很多种方法。
小弟在此讲解下自己在公司内学到的
首先有管理员表Manager
MID |
MUserName |
MPws |
GroupID |
1 |
aa |
aa |
1000 |
2 |
bb |
bb |
1001 |
有个权限表Group
GroupID |
GroupName |
GroupInfo(有哪些权限) |
|
1000 |
技术部 |
AddNews|EditNews|DeleteNews |
|
1001 |
客服部 |
AddNews|EditNews |
|
有个操作表Control
CID |
CName |
CInfo |
1 |
AddNews |
增加新闻 |
2 |
EditNews |
修改新闻 |
3 |
DeleteNews |
删除新闻 |
好了,表建好了。接下来是代码部分
小弟对生命周期也不是很了解,只懂得其中的一些
首先我们创建一个类。由于每个页面都要判断是否有操作权限,如果用session或cookie在页面判断的话也可以,不过这样相对增加代码量,也可以用HttpModule来做
这里介绍的是继承类
创建一个类为Manager:System.Ui.Page
然后在Manager类里重写Onload()方法。(在页面执行时由于有继承类,会先执行父类)
在Onload方法里我们可以通过登陆时获得的用户名去查找到对应的GroupID.
然后由GroupID得到相应的GroupInfo权限。这时我们可以通过split('|')然后在循环判断。这时有个问题了。那得到的权限要和哪里对比呢?
这时我们就要通过重写另一个方法了!OnInit方法(在页面中重写)
通过重写OnInit方法
{
this.ID="AddNews";//表示为这个页面是增加新闻页面
}
然后我们接上面的话题
这样我们可以在Onload方法中用ID.ToString()得到这个页面是哪个页面
然后循环判断GroupInfo,看有没有和这个ID.ToString()相等的,有返回true,否则返回false;
这时我们就可以知道该用户有没有执行这个页面的权限了
操作表其实没怎么用到。只是一个介绍表。不过可以记录用户在哪个时间操作了哪个页面。这样当做一些误操作或其他事时时可以知道是哪个人在哪个页面执行了。这样找的范围就缩小了。
这时小弟的一些见解。
由于小弟刚入社会不久,还是小菜鸟一只。希望各位前辈可以指点下。
(1)Onload是在Page_Load前面执行的吗?如果单单继承Manager,而Manager里面不是重写的Onload方法,而是自定义的方法Check()。这样会执行Check()方法里吗?(ps:这是现在临时想到要记下来的。在家里没有安装环境,不能测试)
(2)各位前辈一般都怎么做的呢?可以不吝赐教下不!