通过SiteMapDataSource动态获取SiteMap文件进行权限设置
最近做一个用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文章