Усечение безопасности файла Sitemap с использованием только атрибутов ролей, и не разрешать / запрещать правила где-либо еще

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

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

Заранее спасибо!

2 ответа

Решение

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

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

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

public override SiteMapNodeCollection GetChildNodes(SiteMapNode node)
{
    return CustomSecurityTrim(base.GetChildNodes(node));
}
Другие вопросы по тегам