最近做一个用ASP.NET做一个小项目,用户不是很多,功能不算太复杂,但是做到权限控制的时候有点犯难,这么一个小系统如果全部做一个大的复杂的权限控制觉得成本不划算,打算用Treeview ,根据不同的用户,加载不同的用户web.sitemap文件实现简单的分用户,分模块的权限控制,具体实现如下:

首先在数据库中建一个简单的用户角色表,以实现不同的用户角色对应不同的web.sitemap文件

添加不同的web.sitemap文件,同时修改web.config文件如下:

在system.web下增加如下几个配置项:

<siteMap>
   <providers>
    <add name="web" type="System.Web.XmlSiteMapProvider" siteMapFile="Web.sitemap"/>
    <add name="mod1" type="System.Web.XmlSiteMapProvider" siteMapFile="mod1.sitemap"/>
    <add name="mod2" type="System.Web.XmlSiteMapProvider" siteMapFile="mod2.sitemap"/>
    <add name="mod3" type="System.Web.XmlSiteMapProvider" siteMapFile="mod3.sitemap"/>
   </providers>
  </siteMap>

如下是实现的C#代码:

public partial class Usercontrol_WebUserControlTreeView : System.Web.UI.UserControl
{
    SqlConnection conn = new SqlConnection(System.Configuration.ConfigurationManager.AppSettings["strcon"]);//建立数据连接

protected void Page_Load(object sender, EventArgs e)
    {
        GetTreeViewControl();//显示不同权限的菜单
    }

public void GetTreeViewControl()
    {
        string myRoleID=Session["RoleID"].ToString().Trim();
        if (myRoleID=="0")
        {
            SiteMapDataSource1.SiteMapProvider = "Web";//加载全部权限sitemap
        }
        if (myRoleID == "1"||myRoleID=="2"||myRoleID=="3"||myRoleID=="4"||myRoleID=="5"||myRoleID=="6"||myRoleID=="7")//车队派司机用户
        {
            SiteMapDataSource1.SiteMapProvider = "mod1";
        }
        if (myRoleID == "11" || myRoleID == "12" || myRoleID == "13")//调度用户
        {
            SiteMapDataSource1.SiteMapProvider = "mod2";
        }
        if (myRoleID == "14")//财务用户
        {
            SiteMapDataSource1.SiteMapProvider = "mod3";
        }
    
    }

对于不严格的权限控制的项目,如上是完全够用的,望各位给出自己的意见和解决方式

转自:http://blog.csdn.net/baolei1981/article/details/2129836#0-qzone-1-531-d020d2d2a4e8d1a374a433f596ad1440文章

通过SiteMapDataSource动态获取SiteMap文件进行权限设置的更多相关文章

  1. Linux文件/目录权限设置命令:chmod

    文件/目录权限设置命令:chmod 这是Linux系统管理员最常用到的命令之一,它用于改变文件或目录的访问权限.该命令有两种用法: 用包含字母和操作符表达式的文字设定法 其语法格式为:chmod [w ...

  2. 文件/文件夹权限设置命令chmod的具体使用方法

    chmod是文件/文件夹权限设置的命令,在Linux中常常遇到.本博文下面总结chmod的具体使用方法. Linux/Unix的档案调用权限分为三级,即档案拥有者user.群组group.其它othe ...

  3. Android开发,缺少权限导致无法修改原文件,获取所有文件访问权限的方法

    在Android 11开发中,app会遇到使用绝对路径无法打开某文件的情况(文件存在根目录下,获取到的路径为:/storage/emulated/0/XXX.txt),而使用相对路径打开文件后(获取到 ...

  4. 动态获取jar文件的路径

    下面专门封装了一个类来处理: import  java.io.File; /** * 获取打包后jar的路径信息 * @author Administrator *  2011-01-16 13:53 ...

  5. php apache用户写文件夹权限设置

    php一般是以apache用户身份去执行的,把apache加入到存储你文件的父文件夹属组里去,然后改该父文件夹权限为775,这样属组成员就有写的权限,而apache属于这个组就可以改写该目录下所有文件 ...

  6. .ssh 文件夹权限设置问题

    .ssh 文件夹权限 问题 今天遇到了 关于.ssh 文件夹夹 设置什么权限合适问题 :答案是 700 chmod 700 .ssh

  7. .NET下,关于文件夹权限设置的小细节

    InheritanceFlags 指定哪些接受权限继承 InheritanceFlags.ContainerInherit 下级文件夹要继承权限. InheritanceFlags.None 下级文件 ...

  8. Android的读写文件及权限设置

    drwx read write excute openFileOutput(name,drwx); 用系统api读取文件 设置文件生成的权限:    public static boolean sav ...

  9. samba服务器的搭建和用户权限,文件夹权限设置

    一.简介:samba服务是基于netbios  安装: 通过yum安装 [root@localhost ~]# yum install samba samba-client samba-swat 查看 ...

随机推荐

  1. hosts.allow hosts.deny

    简单控制访问ip,hosts.allow/hsots.deny  a simple access control language that is based on client (host name ...

  2. 全栈JavaScript之路(十三)了解 ElementTraversal 规范

    支持Element Traversal 规范的浏览器有IE 9+.Firefox 3.5+.Safari 4+.Chrome 和Opera 10+. 对于元素间的空格,在IE9之前.都不会返回文档节点 ...

  3. 【redis】常用命令

    三.常用命令    1)连接操作命令    quit:关闭连接(connection)    auth:简单密码认证    help cmd: 查看cmd帮助,例如:help quit         ...

  4. PHP中的一些新特性

    PHP 5.6 1.可以使用表达式定义常量 https://php.net/manual/zh/migration56.new-features.php 在之前的 PHP 版本中,必须使用静态值来定义 ...

  5. Mac新建文件夹、txt文件、其他格式文件

    Mac新建txt,正好有人问我,我就把我自己的方法记录一下: 先cd到你指定的文件路径下: 新建文件夹: mkdir test 新建txt touch test.txt 新建无后缀格式文件 touch ...

  6. 【LeetCode】164. Maximum Gap (2 solutions)

    Maximum Gap Given an unsorted array, find the maximum difference between the successive elements in ...

  7. Setting up a static IP address in Ubuntu

    sudo gedit /etc/network/interfaces Change the line iface eth0 inet dhcp to iface eth0 inet static an ...

  8. JavaScript和JQuery中的事件\委托链\事件冒泡\事件捕获,兼容所有浏览器

    有做过北大青鸟培训讲师经验的我,如今在一家公司做技术部经理的职位,发现有很多程序员的基本功相当糟糕,在组织企业内部培训时讲解了一些案例,总结了一些经典代码,希望对自己和有需要的人提供一些帮助吧: Ja ...

  9. ubuntu16安装配置nginx

    Nginx ("engine x") 是一个高性能的 HTTP 和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器. Nginx 是由 Igor Sysoev ...

  10. Android中的httpclient框架发送get请求

    /** * 採用httpclientGet请求的方式 * * @param username * @param password * @return null表示求得的路径有问题,text返回请求得到 ...