SecurityTrimming в asp.net Карта сайта

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

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

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

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

1 ответ

Решение

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

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

Другие вопросы по тегам