利用已有数据库结合ASP.NET2.0权限管理机制实现权限分配(2)

接上面

当我们按照上面的步骤执行之后,就可以得用"ASP.NET 2.0提供的网站配置工具",在"安全"项目中为各角色建立访问规则了.

但有一点要注意,就是ASP.NET 2.0的访问规则是以"文件夹"为单位的,也就是不能以各个网页为单位建立访问规则.配置完成后,我们会发现在各个文件夹里面都会自动生成一个Web.Config文件.查看可得:

1 None.gif < system .web >   <!-- 添加当前权限设置 -->
2 None.gif < authorization >
3 None.gif < allow  roles ="webAdmin" />
4 None.gif < allow  roles ="superAdmin" />
5 None.gif < deny  users ="*" />
6 None.gif </ authorization >
7 None.gif
8 None.gif </ system.web >

1 None.gif < system .web >   <!-- 添加当前目录权限设置 -->
2 None.gif < authorization >
3 None.gif < allow  roles ="superAdmin" />
4 None.gif < deny  users ="*" />
5 None.gif </ authorization >
6 None.gif
7 None.gif
8 None.gif </ system.web >

上面的第一个配置代码说明:拒绝出除了webAdmin,superAdmin角色之外的一切用户访问当前文件夹.第一个配置代码说明:拒绝除了superAdmin角色之外的一切用户访问当前文件夹.前未经授权的用户打开存

在于这两个文件夹里的网页时,系统默认会自动转向"login.aspx"页,以登陆验证.

注意这种方法实际上是结合IIS和Windows的NTFS文件系统的权限做成的,如果文件系统不是NTFS而是如FAT32,不保证可以用.

这样做确实可以达到权限分配的目的,但是各个角色怎么样才能知道自己到底有权力访问哪些页面呢,例如我们在用TreeView控件做导航页面的时候,毕竟一点错就强制转向"login.aspx"很是不爽.

下面介绍一种方法,可以让导航控件根据各个角色的不同,只显示自己权限可以查看的页面,过滤掉那些自己无权查看的页面.

该方法用Web.sitemap中的Roles属性结合各文件夹权限设置做成.

第一步:按上面的方法配置各文件夹的权限.

第二步:在总Web.Config文件中,配置角色过滤功能.

1 None.gif <!-- 添加siteMap角色过滤字段 -->
2 None.gif < siteMap  defaultProvider ="XMLSiteMapProvider"  enabled ="true" >
3 None.gif < providers >
4 None.gif < add  name ="XMLSiteMapProvider"  description ="Default SiteMap provider."  type ="System.Web.XmlSiteMapProvider"  siteMapFile ="Web.sitemap"  securityTrimmingEnabled ="true" />
5 None.gif </ providers >
6 None.gif </ siteMap >

第三步:拖入一个TreeView控件,建立Web.sitemap站点地图文件.

此时,按照正常情况,运行之后TreeView会显示站点地图文件中的设置,但你会发现页面上什么也没有,这就是上面那段角色过滤代码的作用.

第四步:配置Web.sitemap文件中的Roles属性,多个角色之间用逗号隔开.注意只可以配置主节点的Roles属性,子节点无效.其意思是只有Roles属性中配置的角色可以看见这些节点,其他所有用户都看不到.

 1 None.gif <? xml version="1.0" encoding="utf-8" ?>
 2 None.gif < siteMap >
 3 None.gif < siteMapNode  url =""  title ="管理系统"  roles ="superAdmin,webAdmin" >
 4 None.gif < siteMapNode  url =""  title ="管理员管理"  roles ="superAdmin,webAdmin" >
 5 None.gif < siteMapNode  url ="manage/adminInfo.aspx"  title ="查看信息"   />
 6 None.gif < siteMapNode  url ="manage/superAdmin/regSuperAdmin.aspx"  title ="注册管理员"   />
 7 None.gif < siteMapNode  url ="manage/superAdmin/authorization.aspx"  title ="角色授权"   />
 8 None.gif </ siteMapNode >
 9 None.gif < siteMapNode  url =""  title ="菜单管理"  roles ="superAdmin" >
10 None.gif < siteMapNode  url ="manage/superAdmin/changeMenu.aspx"  title ="修改菜单信息"   />
11 None.gif < siteMapNode  url ="manage/superAdmin/addMenu.aspx"  title ="增加菜单"   />
12 None.gif < siteMapNode  url ="manage/superAdmin/delMenu.aspx"  title ="删除菜单"   />
13 None.gif </ siteMapNode >
14 None.gif </ siteMapNode >
15 None.gif </ siteMap >


此时,一个按照角色权限动态显示页面导航的TreeView控件制作完成.其中文件夹的设置如下:

manage包括superAdmin文件夹,manage文件夹webAdmin,superAdmin都有权限查看,superAdmin文件夹只有superAdmin权限可以查看.这时TreeView控件在webAdmin权限下只显示manage文件下

的链接,不会显示superAdmin文件夹下的链接.而在superAdmin权限下却可以查看所有manage包括其子文件夹下的链接.

完成.

转载于:https://www.cnblogs.com/ycyk-168/archive/2007/06/22/792596.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值