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. Проверьте ниже статью для получения дополнительной информации.