不管是做网页,还是做C/S结构,对权限的控制都占有很大的重量。
下面看一下我是怎样来对网页的权限进行控制的。对于数据库的建立,我参照的小崔的一篇博客——Asp.net访问权限管理,但他只从思想上来说了一下,这次,我从思想到行动上,都说明一下。
建表上,我建立了这样的表:用户信息表、组表、模块表和页面表(只针对权限管理的部分)、页面权限表
在用户信息表中,有这样 的字段:用户名、密码、组号(外键)
组表中是这样的一个情况:组号,组名,模块号(非外键的外键)。这里说明一下什么是非外键的外键,就是这个里面的东西确实是模块表中的模块号,但是要无法根据这个查出来,因为我将这个组可以访问的模块ID,全都存到了这一个字段里。例如:模块表中有ID分别为1、2、3、4的模块,其中一个组都可以访问,那么在这个组里是这样存的:“1,2,3,4,”。
模块表和页面表比较简单,模块表中只有ID和名字,页面表中有ID、名字,URL。
那么权限表中应该有什么呢?你是否已经发现,现在只对组对应的模块进行了赋权,对于页面,还没有进行赋权呢?对,这个表就是对每个组对应模块下的页面进行赋权。字段相信你已经猜出来了吧,就是组号、模块号,页面号(同组表中的模块号)。
说一下这样的好处,一个网页的导航,我们现在就可以根据不同的权限分配不同的导航,对于不同权限,所看到相应模块下的内容,我们也可以进行设置。
说了这么多了,你有没有发现,到现在为止,你都没看出来我要做什么?这就是这个权限管理的厉害之处,它不止可以用到我们这个系统,对于任何一个和我们的网页结构相似的也是可以用的。
可能只说,有点乏味,我现在手动写一下每个里面的字段吧。
用户表:
用户名 密码 组号
123 123 1
456 456 2
组表
ID 名称 模块号
1 admin 1,2,3,4,
2 operator 1,2,
模块
ID 名称
1 搜索
2 查看信息
3 随便
4 用户管理
页面(这个比较多,我就不写URL和模块了了哈)
ID 名称
1 CSDN
2 搜狐
3 搜狗
4 迅雷
5 百度
页面权限(这个页面号有点别扭,有不明白就回复哈)
组号 模块号 页面号
1 1 1,2,3,
1 2 2,3,
1 3 4,3,2,
1 4 1,2,3,4,
2 1 1,2,
2 2 2,3,
2 3 3,4
这样,每个人就只可以看到属于自己的那部分的页面了,不过为了安全,在访问的时候,还是应该判断这个用户是否对此页面具有权限访问。
其实到这里,很多人都可以看明白,我看了他的博客,我也学的很好,可以就是在实现上面感觉有点摸不着头脑。
相信同样觉得这个权限管理万能的你是不是也想知道究竟应该怎样去把这个用到正在做的程序中去呢?那么就期待我的下篇博客吧——实现部分。