Pergunta

Eu tenho um web.sitemap com filtragem de segurança habilitado, porém eu preciso ocultar um item de menu baseado em um papel para uma página que não tem regras de acesso no web.config.

i Eu tenho uma página de campanha que é utilizado para visualizar as campanhas existentes, bem como para adicionar novas campanhas, mas eu quero o "Novas Campanhas" item de menu para ser escondido para usuários anônimos. Eu tentei adicionar o nome da função para o atributo papéis no web.sitemap mas isso não tem efeito.

Eu tenho certeza que deve haver uma maneira rápida de fazer isso sem modificar o provedor de mapa do site que é o meu próximo porto de escala.

Foi útil?

Solução

Se este é apenas um caso especial para usuários anônimos, você pode criar um segundo mapa do site.

Criar um novo WebAnon.sitemap arquivo.
Criar um novo provedor de mapa do site no web.config

<add name="anonProvider" type="System.Web.XmlSiteMapProvider" siteMapFile="WebAnon.sitemap" securityTrimmingEnabled="true"/>

Definir o SiteMapDataSource SiteMapProvider propriedade para "anonProvider" no código por trás se o seu um usuário anônimo.

Outras dicas

O atributo roles em um <siteMapNode /> é uma lista "permitir", e não um negar. Criar / modificar um elemento <location /> correspondente no web.config para permitir que os usuários autenticados e negar anónima; por exemplo.

<location path="campaigns.aspx">
 <system.web>
  <authorization>
   <allow users="*" />
   <deny users="?" />
  </authorization>
 </system.web>
</location>

BTW, se você estiver usando um principal e funções do Windows, qualquer alteração à sua participação no grupo não terão efeito até que você faça logoff e, em seguida, novamente.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top