利用已有数据库结合ASP.NET2.0权限管理机制实现权限分配(2)
2007-06-22 09:07
501 查看
接上面
当我们按照上面的步骤执行之后,就可以得用"ASP.NET 2.0提供的网站配置工具",在"安全"项目中为各角色建立访问规则了.
但有一点要注意,就是ASP.NET 2.0的访问规则是以"文件夹"为单位的,也就是不能以各个网页为单位建立访问规则.配置完成后,我们会发现在各个文件夹里面都会自动生成一个Web.Config文件.查看可得:
1<system.web> <!--添加当前权限设置-->
2<authorization>
3<allow roles="webAdmin"/>
4<allow roles="superAdmin"/>
5<deny users="*"/>
6</authorization>
7
8</system.web>
1<system.web> <!--添加当前目录权限设置-->
2<authorization>
3<allow roles="superAdmin"/>
4<deny users="*"/>
5</authorization>
6
7
8</system.web>
上面的第一个配置代码说明:拒绝出除了webAdmin,superAdmin角色之外的一切用户访问当前文件夹.第一个配置代码说明:拒绝除了superAdmin角色之外的一切用户访问当前文件夹.前未经授权的用户打开存
在于这两个文件夹里的网页时,系统默认会自动转向"login.aspx"页,以登陆验证.
注意这种方法实际上是结合IIS和Windows的NTFS文件系统的权限做成的,如果文件系统不是NTFS而是如FAT32,不保证可以用.
这样做确实可以达到权限分配的目的,但是各个角色怎么样才能知道自己到底有权力访问哪些页面呢,例如我们在用TreeView控件做导航页面的时候,毕竟一点错就强制转向"login.aspx"很是不爽.
下面介绍一种方法,可以让导航控件根据各个角色的不同,只显示自己权限可以查看的页面,过滤掉那些自己无权查看的页面.
该方法用Web.sitemap中的Roles属性结合各文件夹权限设置做成.
第一步:按上面的方法配置各文件夹的权限.
第二步:在总Web.Config文件中,配置角色过滤功能.
1<!--添加siteMap角色过滤字段-->
2<siteMap defaultProvider="XMLSiteMapProvider" enabled="true">
3<providers>
4<add name="XMLSiteMapProvider" description="Default SiteMap provider." type="System.Web.XmlSiteMapProvider" siteMapFile="Web.sitemap" securityTrimmingEnabled="true"/>
5</providers>
6</siteMap>
第三步:拖入一个TreeView控件,建立Web.sitemap站点地图文件.
此时,按照正常情况,运行之后TreeView会显示站点地图文件中的设置,但你会发现页面上什么也没有,这就是上面那段角色过滤代码的作用.
第四步:配置Web.sitemap文件中的Roles属性,多个角色之间用逗号隔开.注意只可以配置主节点的Roles属性,子节点无效.其意思是只有Roles属性中配置的角色可以看见这些节点,其他所有用户都看不到.
1<?xml version="1.0" encoding="utf-8"?>
2<siteMap>
3<siteMapNode url="" title="管理系统" roles="superAdmin,webAdmin">
4<siteMapNode url="" title="管理员管理" roles="superAdmin,webAdmin">
5<siteMapNode url="manage/adminInfo.aspx" title="查看信息" />
6<siteMapNode url="manage/superAdmin/regSuperAdmin.aspx" title="注册管理员" />
7<siteMapNode url="manage/superAdmin/authorization.aspx" title="角色授权" />
8</siteMapNode>
9<siteMapNode url="" title="菜单管理" roles="superAdmin">
10<siteMapNode url="manage/superAdmin/changeMenu.aspx" title="修改菜单信息" />
11<siteMapNode url="manage/superAdmin/addMenu.aspx" title="增加菜单" />
12<siteMapNode url="manage/superAdmin/delMenu.aspx" title="删除菜单" />
13</siteMapNode>
14</siteMapNode>
15</siteMap>
此时,一个按照角色权限动态显示页面导航的TreeView控件制作完成.其中文件夹的设置如下:
manage包括superAdmin文件夹,manage文件夹webAdmin,superAdmin都有权限查看,superAdmin文件夹只有superAdmin权限可以查看.这时TreeView控件在webAdmin权限下只显示manage文件下
的链接,不会显示superAdmin文件夹下的链接.而在superAdmin权限下却可以查看所有manage包括其子文件夹下的链接.
完成.
当我们按照上面的步骤执行之后,就可以得用"ASP.NET 2.0提供的网站配置工具",在"安全"项目中为各角色建立访问规则了.
但有一点要注意,就是ASP.NET 2.0的访问规则是以"文件夹"为单位的,也就是不能以各个网页为单位建立访问规则.配置完成后,我们会发现在各个文件夹里面都会自动生成一个Web.Config文件.查看可得:
1<system.web> <!--添加当前权限设置-->
2<authorization>
3<allow roles="webAdmin"/>
4<allow roles="superAdmin"/>
5<deny users="*"/>
6</authorization>
7
8</system.web>
1<system.web> <!--添加当前目录权限设置-->
2<authorization>
3<allow roles="superAdmin"/>
4<deny users="*"/>
5</authorization>
6
7
8</system.web>
上面的第一个配置代码说明:拒绝出除了webAdmin,superAdmin角色之外的一切用户访问当前文件夹.第一个配置代码说明:拒绝除了superAdmin角色之外的一切用户访问当前文件夹.前未经授权的用户打开存
在于这两个文件夹里的网页时,系统默认会自动转向"login.aspx"页,以登陆验证.
注意这种方法实际上是结合IIS和Windows的NTFS文件系统的权限做成的,如果文件系统不是NTFS而是如FAT32,不保证可以用.
这样做确实可以达到权限分配的目的,但是各个角色怎么样才能知道自己到底有权力访问哪些页面呢,例如我们在用TreeView控件做导航页面的时候,毕竟一点错就强制转向"login.aspx"很是不爽.
下面介绍一种方法,可以让导航控件根据各个角色的不同,只显示自己权限可以查看的页面,过滤掉那些自己无权查看的页面.
该方法用Web.sitemap中的Roles属性结合各文件夹权限设置做成.
第一步:按上面的方法配置各文件夹的权限.
第二步:在总Web.Config文件中,配置角色过滤功能.
1<!--添加siteMap角色过滤字段-->
2<siteMap defaultProvider="XMLSiteMapProvider" enabled="true">
3<providers>
4<add name="XMLSiteMapProvider" description="Default SiteMap provider." type="System.Web.XmlSiteMapProvider" siteMapFile="Web.sitemap" securityTrimmingEnabled="true"/>
5</providers>
6</siteMap>
第三步:拖入一个TreeView控件,建立Web.sitemap站点地图文件.
此时,按照正常情况,运行之后TreeView会显示站点地图文件中的设置,但你会发现页面上什么也没有,这就是上面那段角色过滤代码的作用.
第四步:配置Web.sitemap文件中的Roles属性,多个角色之间用逗号隔开.注意只可以配置主节点的Roles属性,子节点无效.其意思是只有Roles属性中配置的角色可以看见这些节点,其他所有用户都看不到.
1<?xml version="1.0" encoding="utf-8"?>
2<siteMap>
3<siteMapNode url="" title="管理系统" roles="superAdmin,webAdmin">
4<siteMapNode url="" title="管理员管理" roles="superAdmin,webAdmin">
5<siteMapNode url="manage/adminInfo.aspx" title="查看信息" />
6<siteMapNode url="manage/superAdmin/regSuperAdmin.aspx" title="注册管理员" />
7<siteMapNode url="manage/superAdmin/authorization.aspx" title="角色授权" />
8</siteMapNode>
9<siteMapNode url="" title="菜单管理" roles="superAdmin">
10<siteMapNode url="manage/superAdmin/changeMenu.aspx" title="修改菜单信息" />
11<siteMapNode url="manage/superAdmin/addMenu.aspx" title="增加菜单" />
12<siteMapNode url="manage/superAdmin/delMenu.aspx" title="删除菜单" />
13</siteMapNode>
14</siteMapNode>
15</siteMap>
此时,一个按照角色权限动态显示页面导航的TreeView控件制作完成.其中文件夹的设置如下:
manage包括superAdmin文件夹,manage文件夹webAdmin,superAdmin都有权限查看,superAdmin文件夹只有superAdmin权限可以查看.这时TreeView控件在webAdmin权限下只显示manage文件下
的链接,不会显示superAdmin文件夹下的链接.而在superAdmin权限下却可以查看所有manage包括其子文件夹下的链接.
完成.
相关文章推荐
- 利用已有数据库结合ASP.NET2.0权限管理机制实现权限分配
- 利用已有数据库配合ASP.NET2.0内置用户 角色 授权系统打造自己的权限分配程序(1)
- 利用已有数据库配合ASP.NET2.0内置用户 角色 授权系统打造自己的权限分配程序(2)
- 利用ZTree链接数据库实现 [权限管理]
- 利用ZTree链接数据库实现 [权限管理]
- 内存储器管理概述、内存分配与释放、地址映射机制(mm_struct, vm_area_struct)、malloc/free 的实现
- 利用PHP的debug_backtrace函数,实现PHP文件权限管理、动态加载
- 基于角色的访问控制'的权限管理的数据库的设计实现
- ASP.NET MVC实现权限管理以及权限分配
- SpringBoot整合mybatis、shiro、redis实现基于数据库的细粒度动态权限管理系统实例
- 用ASP+XML实现CSDN的菜单(数据库),可分权限管理
- 框架 day54 BOS项目练习(权限/角色/用户管理(CRUD),基于数据库实现动态授权,ehcache缓存权限,shiro标签,菜单权限展示)
- 在家看孩子,10分钟生成一个业务管理系统【能支持多数据库,大数据,流程审批,权限控制,即时提醒】,视频讲解详细实现步骤
- vsftpd+mysql+apache实现给虚拟用户分配不同目录及权限并实现远程管理
- 用ASP+XML实现CSDN的菜单(数据库),可分权限管理.
- 二进制实现权限的分配管理
- AD域环境下利用Supercrypt实现普通用户安装/运行/更新使用管理权限的方法
- 利用Sudo命令为Ubuntu系统分配管理权限
- 利用ADO.NET类库结合后台数据库实现登录判断
- 本文主要介绍使用SpringBoot与shiro实现基于数据库的细粒度动态权限管理系统实例。