在读取站点地图时自动应用安全设置
在ASP.NET开发中,站点地图使用很普遍。一般站点地图就是一个标准的xml文件,其文件扩展名为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="UserManagment/default.aspx" title="后台管理" description="">
<siteMapNode url="UserManagment/CreateUser.aspx" title="创建用户"></siteMapNode>
<siteMapNode url="UserManagment/CreateRole.aspx" title="创建角色"></siteMapNode>
<siteMapNode url="UserManagment/Login.aspx" title="用户登录"></siteMapNode>
<siteMapNode url="UserManagment/UserManagmentPage.aspx" title="用户管理"></siteMapNode>
<siteMapNode url="UserManagment/RoleManagmentPage.aspx" title="角色管理"></siteMapNode>
</siteMapNode>
<siteMapNode url="Basic/Help.aspx" title="帮助页面" description="" />
</siteMapNode>
</siteMap>
这个站点地图可以提供给三个控件使用,他们分别是
- TreeView
- Menu
- SitemapPath
我相信很多朋友都用过上面三个控件。但可能大家会想一个问题:因为我们的页面会有授权方面的要求,例如上面的“后台管理”这个页面可能就只有管理员才可以访问。我们能不能在控件中根据当前用户的身份自动地决定哪些是要显示的,而哪些是不显示的呢?
答案是肯定的。请在web.config中添加如下设置即可
<siteMap defaultProvider="XmlSiteMapProvider" enabled="true">
<providers>
<add name="XmlSiteMapProvider" description="通过读取一个站点地图文件" type="System.Web.XmlSiteMapProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" siteMapFile="web.sitemap" securityTrimmingEnabled="true"/>
</providers>
</siteMap>
关键的一个属性就是securityTrimmingEnabled="true"