2010-09-22 2 views
2

У меня есть карта сайта, которая выглядит следующим образом:SiteMap на основе ролей пользователей не работает

<?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> 

если установить роль в SiteMapNode с названием «Анализа» он отлично работает, ссылка не отображается в навигация ... но если я задал роли на любом из «karneki» siteMapNode, ссылки все еще видны ...

Возможно ли ограничить доступ к нижним ссылкам на основе роли пользователя?

ответ

3

Используйте SiteMap 'securityTrimmingEnabled' атрибут:

http://msdn.microsoft.com/en-us/library/ms178428.aspx

asecurityTrimmingEnabled атрибут также должен быть добавлен к узлам в разметке:

http://weblogs.asp.net/jgalloway/archive/2008/01/26/asp-net-menu-and-sitemap-security-trimming-plus-a-trick-for-when-your-menu-and-security-don-t-match-up.aspx

обзор того, как securityTrimmingEnabled должен работать:

http://blogs.msdn.com/b/dannychen/archive/2006/03/16/553005.aspx

+0

Это уже установлено значение «истина» – DiaMonD

+0

<= defaultProvider Карта сайта "XmlSiteMapProvider" включен = "истинный"> <добавить имя = "XmlSiteMapProvider" описание = "По умолчанию поставщик SiteMap." тип = "System.Web.XmlSiteMapProvider" siteMapFile = "Web.sitemap" securityTrimmingEnabled = "истинный" /> DiaMonD

+0

Я обновил ответ :-) – IrishChieftain

0

Решение этого вопроса заключается в том, что вам необходимо установить роли в Web.config для самих страниц.

См http://weblogs.asp.net/jgalloway/archive/2008/01/26/asp-net-menu-and-sitemap-security-trimming-plus-a-trick-for-when-your-menu-and-security-don-t-match-up.aspx

например, в папке для страницы под названием 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> 
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> 
Смежные вопросы