я столкнулся странные проблемы на моем сайте, у меня есть меню, которое я обработки с 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>