0

Я знаю, что тег имеет атрибут «role», чтобы компенсировать узлы, у которых нет атрибута «url», который может быть разрешено другими способами. Меня не интересуют эти другие способы, хотя я бы хотел, чтобы все мои разрешения были установлены в файле Sitemap. Как это сделать?Обрезка безопасности базы данных с использованием только атрибутов ролей и не разрешать/запрещать правила в другом месте

Я использую настраиваемый RoleProvider, пользовательский MemberhipProvider и стандартный XmlSiteMapProvider. У меня также есть IHttpModule безопасности, чтобы люди не могли туда попасть, используя прямой URL. Я открыт для разных подходов.

Заранее благодарен!

ответ

1

Вы можете реализовать собственный XmlSiteMapProvider и переопределить метод IsAccessibleToUser.

public override bool IsAccessibleToUser(HttpContext context, SiteMapNode node) 
{ 
    return <condition in which access is allowed> 
} 
1

В конце концов, я внедрил свою собственную защиту, создав XmlSiteMapProvider. Это было достаточно просто.

public override SiteMapNodeCollection GetChildNodes(SiteMapNode node) 
{ 
    return CustomSecurityTrim(base.GetChildNodes(node)); 
} 
+3

Лучшим решением было бы переопределить IsAccessibleToUser – Zyphrax

+0

Zyphrax, большое спасибо - очень легкий, элегантный и работает по мере необходимости. – VikciaR

+0

@ Zyphrax вы могли бы разместить свое решение в качестве ответа, чтобы я мог переключиться на него? – Ekevoo

 Смежные вопросы

  • Нет связанных вопросов^_^