我的网站地图如下所示:
<?xml version="1.0" encoding="utf-8" ?>
<siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0" >
<siteMapNode url="~/default.aspx" title="Prva stran" roles="*" description="Shema ISEF">
<siteMapNode roles="2" title="Analize" id="Analize" description="" >
<siteMapNode url="~/karneki1.aspx" title="Karneki1" description="" />
<siteMapNode url="~/karneki2.aspx" title="Karneki2" description="" />
</siteMapNode>
</siteMapNode>
</siteMap>
如果我在一个标题为“Analiza”的siteMapNode中设置角色,它工作正常,导航中没有显示链接...但是如果我在任何“karneki”siteMapNode上设置角色,链接仍然可见...
是否可以根据用户角色限制对较低链接的访问?
答案 0 :(得分:3)
使用SiteMap的“securityTrimmingEnabled”属性:
http://msdn.microsoft.com/en-us/library/ms178428.aspx
还需要将asecurityTrimmingEnabled属性添加到标记中的节点:
概述securityTrimmingEnabled应该如何工作:
http://blogs.msdn.com/b/dannychen/archive/2006/03/16/553005.aspx
答案 1 :(得分:0)
解决方法是,您需要在Web.config中为页面本身设置角色。
e.g。在名为AdminOnly.aspx的页面的文件夹中添加一个Web.Config,其中包含以下内容:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<location path="AdminOnly.aspx">
<system.web>
<authorization>
<allow roles="Administrator"/>
<deny users="*" />
</authorization>
</system.web>
</location>
</configuration>
答案 2 :(得分:0)
尝试将角色添加到站点地图中,如下所示
<?xml version="1.0" encoding="utf-8" ?>
<siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0" >
<siteMapNode url="~/default.aspx" roles="*" title="Prva stran" roles="*" description="Shema ISEF">
<siteMapNode roles="2" title="Analize" id="Analize" description="" >
<siteMapNode roles="*" url="~/karneki1.aspx" title="Karneki1" description="" />
<siteMapNode roles="*" url="~/karneki2.aspx" title="Karneki2" description="" />
</siteMapNode>
</siteMapNode>
</siteMap>