最近做一个用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. linux 文件操作库函数

    fopen :打开文件 fread :读文件 fwrite : 写文件 fgetc : 读字符 fputc : 写字符 fscanf : 格式化读 fprintf : 格式化写 fseek : 文件偏 ...

  2. hdu4135容斥原理 组合遍历

    容斥原理实现的关键在于:组合遍历,即如何遍历2^n种组合. 容斥原理的三种写法: DFS 队列数组 位数组 #include<stdio.h> #include<iostream&g ...

  3. Python 各种库的安装

    在Win7 系统安装的Python 各种库,如:pandas.numpy.scipy等 因为平时使用的是IDE-PyCharm,这里可以直接 [File-Setting-Project:XXX-“+” ...

  4. struts2 xml配置文件配置传参数

    传参方式 重定向 第一方式: <action name="search" method="search"            class="c ...

  5. python学习笔记013——包package

    1 包(模块包)package 1.1 包的定义 包是将模块以文件夹的组织形式进行分组管理的方法 1.2 作用 分类管理,有利于防止命名冲突 可以在需要时加载一个或部分模块,而不是全部模块 mypac ...

  6. FA_资产成批报废(流程)

    2014-06-08 Created By BaoXinjian

  7. slub分配器

    Linux的物理内存管理采用了以页为单位的buddy system(伙伴系统),但是很多情况下,内核仅仅需要一个较小的对象空间,而且这些小块的空间对于不同对象又是变化的.不可预测的,所以需要一种类似用 ...

  8. hdu 1853 Cyclic Tour 最大权值匹配 全部点连成环的最小边权和

    链接:http://acm.hdu.edu.cn/showproblem.php?pid=1853 Cyclic Tour Time Limit: 1000/1000 MS (Java/Others) ...

  9. SQL Server 2012 Express LocalDB 的作用

    微软最新推出的 SQL Server 2012 Express LocalDB 是一种 SQL Server Express 的运行模式,特别适合用在开发环境使用,也内置在 Visual Studio ...

  10. 使用SplashScreenManager控件定制程序加载页面

    需要devexpress版本在12.0及以上才支持 https://www.cnblogs.com/wuhuacong/p/6112461.html 在DevExpress程序中使用SplashScr ...