segurança Mapa do corte usando papéis atributos somente, e não permitir / negar regras em outros lugares
-
06-07-2019 - |
Pergunta
Estou ciente de que a marca tem o atributo de "papéis" para compensar os nós que não têm o atributo "url", que podem ser resolvidos de outras maneiras. Eu não estou interessado nessas outras maneiras, porém, eu gostaria de ter todas as minhas permissões definidas no meu arquivo Sitemap. Como conseguir isso?
Eu estou usando RoleProvider costume, MembershipProvider personalizada, eo XmlSiteMapProvider padrão. Eu também tenho uma segurança IHttpModule para impedir as pessoas de chegar lá usando uma URL direta. Estou aberto a diferentes abordagens.
Agradecemos antecipadamente!
Solução
Você pode implementar seu próprio XmlSiteMapProvider e substituir o método IsAccessibleToUser.
public override bool IsAccessibleToUser(HttpContext context, SiteMapNode node)
{
return <condition in which access is allowed>
}
Outras dicas
No final, eu implementado minha própria segurança aparando derivando XmlSiteMapProvider. Foi o suficiente simples.
public override SiteMapNodeCollection GetChildNodes(SiteMapNode node)
{
return CustomSecurityTrim(base.GetChildNodes(node));
}