2012-12-17 11 views
0

я столкнулся странные проблемы на моем сайте, у меня есть меню, которое я обработки с asp:menu и SiteMap, теперь я хочу, чтобы ограничить menu's на основе roles, поэтому я использую securityTrimmingEnable="true" в web.config , теперь моя проблема в том, что у меня есть некоторые пункты меню, которые должны быть активированы двумя типами пользователей (администратор и пользователи с регистрацией), теперь в файле Web.Sitemap, я создал siteMapNode, который используется в меню, здесь я добавил roles атрибут чтобы указать, какие типы пользователей могут получить доступ к меню, есть главное меню, к которому должны обращаться только эти 2 пользователя и никто другой (то есть не анонимный), теперь я не могу найти способ указать несколько ролей в атрибуте roles, Я также попытался указать *, но это, кажется, работает не анонимных пользователей тоже, что это не мое требование, вот образец моего web.sitemap файлаSecurityTrimming в asp.net SiteMap

<siteMapNode roles="*"> 
    <siteMapNode roles="Administrator" url="~/default.aspx" title="HOME" /> 
</siteMapNode> 

в вышеописанном случае меню Home доступна только администратору. теперь, если я укажу *, чтобы сделать его доступным для не-администратора, но вошедшего в систему пользователя, он работает и для пользователей без регистрации.

<siteMapNode roles="*"> 
    <siteMapNode roles="*" url="~/default.aspx" title="HOME" /> 
</siteMapNode> 

В любом случае, я могу сделать вышеуказанное меню доступным для администратора и только в системе.
ниже мои настройки web.config:

<siteMap defaultProvider="XmlSiteMapProvider" enabled="true"> 
     <providers> 
     <clear/> 
     <add name="XmlSiteMapProvider" 
      description="Default SiteMap provider." 
      type="System.Web.XmlSiteMapProvider " 
      siteMapFile="Web.sitemap" 
      securityTrimmingEnabled="true" /> 
     </providers> 
    </siteMap> 

ответ

0

На самом деле существует неправильное представление об использовании атрибутов роли. В вашем случае вместо ограничения на «администратор» он отображается и для других ролей. Элементы меню ограничены в соответствии с настройками авторизации, которые указаны с использованием тегов <location> в файле web.config. Ниже вы найдете статью для получения дополнительной информации.

http://stweet.wordpress.com/2010/06/13/designing-the-folder-structure-of-the-asp-net-web-application/

Смежные вопросы