zoukankan      html  css  js  c++  java
  • 在.net 中依据页的角色验证方式产生相匹配的菜单

    看了很多人都是自己程序获得用户的角色权限,再判断并编写相应的功能菜单,其实.net 中可以允许开发者自己拼合这些功能;
    废话不说,网上也有很多这样的资料,但我感觉说教太多,自己来简单归纳一下方便给大家!

    注:站点必须为asp.net 标准验证方式。自定义cookie认证,自定义Session方式的可以一边凉快去了!

    具体条件
       1、为站点准备SiteMap
          在站点根目录建立一个Web.sitemap 配置文件,例:

    <?xml version="1.0" encoding="utf-8" ?>
    <siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0" >
        
    <siteMapNode url="~/Default.aspx" title="首页"  description="" >
            
    <siteMapNode url="~/Register.aspx" title="注册"  description="" />
            
    <siteMapNode url="~/Login.aspx" title="登陆"  description="" />
          
    <siteMapNode url="~/Album/Default.aspx" title="个人管理" description="">
            
    <siteMapNode url="~/Album/AlbumManager.aspx" title="相册管理" description="" />
            
    <siteMapNode url="~/Album/ImageUploader.aspx" title="图片上传" description="" />
            
    <siteMapNode url="~/Album/ImageManager.aspx" title="图片管理" description="" />
          
    </siteMapNode>
        
    </siteMapNode>
    </siteMap>

        注意:第一级节点只能有1个,其他节点就随意了,可以把全站所有有关的页都编写进来,也可以只写有权限控制相关的页,这个是可以继承的。
       安装有MSDN2005的朋友可以看此内容:ASP.NET 站点地图
          ms-help://MS.VSCC.v80/MS.MSDN.v80/MS.VisualStudio.v80.chs/dv_aspnetcon/html/6b85a558-1df8-44cf-bea6-62e61bcc8d20.htm
      
       2、为文件或目录设置访问权限
          在相关目录的Web.config 中设置就可以,跟平时设置一样

    <system.web>
          
    <authorization>
            
    <!-- 当前目录由Album 角色的用户才可以访问 -->
            
    <allow roles="Album" />
            
    <deny users ="*"/>
          
    </authorization>
        
    </system.web>
      
      
    <location path="ImageUploader.aspx">
        
    <system.web>
          
    <authorization>
            
    <!-- ImageUploader.aspx 只能带Blog角色的用户才可以访问 -->
            
    <allow roles="Blog"/>
            
    <deny users ="*"/>
          
    </authorization>
        
    </system.web>
      </location>

       3、在根Web.config 中启用站点地图角色过滤配置,想省事可以直接复制粘贴
      <system.web>
        
    <siteMap defaultProvider="XmlSiteMapProvider" enabled="true">
          
    <providers>
            
    <add name="XmlSiteMapProvider"
              description
    ="Default SiteMap provider."
              type
    ="System.Web.XmlSiteMapProvider "
              siteMapFile
    ="Web.sitemap"
              securityTrimmingEnabled
    ="true" />
          
    </providers>
        
    </siteMap>
      
    </system.web>

    就这样就OK了!测试一把~~!

       1、拖一个Menu 控件到页面上,并新建一个数据源类型为“站点地图”类型,名字随意。点OK就配置好了!

        测试用例1:(没有登陆以前,只显示根目录下谁都可以访问的文件
        
       测试用例2:(登陆后,具备Album 角色但不具备Blog 角色能力
       
       测试用例3:(登陆后,具备Album角色也具备Blog 角色
       

    完成收工,回家了,显然这样的方式,大量减少的代码,而且把页面文件或目录跟角色绑定起来,实在是非常方便的。
    还想多说点,但MM在家病倒了,所以明天再说吧!


  • 相关阅读:
    Feed back TFS 2017 RC upgrade status to product team in product group 2017.03.01
    TFS Training for Kunlun bank (http://www.klb.cn/) 微软研发流程(ALM)管理培训会议(昆仑银行) 2016.09.21
    微软DevOps软件开发高级培训课程(深圳站) 2016.04.06
    秒杀系统架构设计
    程序员职业规划
    程序员跳槽时,会遇到哪些套路?
    程序员3大点
    程序员37个小贴士
    程序员6大点
    程序员面试 10 大潜规则
  • 原文地址:https://www.cnblogs.com/SUNBOY/p/526587.html
Copyright © 2011-2022 走看看