Эффективно загружать карту сайта из базы данных? - PullRequest
1 голос
/ 13 января 2010

У меня есть пользовательский SiteMapProvider, который я заполняю из базы данных. У меня также есть пользовательский SiteMapNode, который должен быть создан с пользовательским аргументом Page.

Реализация SiteMapProvider.IsAccessibleToUser(context, node) теперь:

Public Overrides Function IsAccessibleToUser(context, node) As Boolean
    Return CType(node, CustomSiteMapNode).Page.IsAccessibleToUser(context.User)
End Function

У меня тоже есть кастом authentication class-attribute:

Public Class ValidateAuthorization : Inherits AuthorizeAttribute
    Public Sub New()

    End Sub

    Protected Overrides Function AuthorizeCore(context) As Boolean
        If Not CType(SiteMap.CurrentNode, JrcSiteMapNode).Page.IsAccessibleToUser(httpContext.User) Then
            Throw New ApplicationException()
        End If

        Return True
    End Function
End Class

Два вопроса:

  1. Должен ли я возвращать false в AuthorizeCore (), чтобы все работало в соответствии с протоколами авторизации по умолчанию? (Что это?) Или я должен выбросить свое исключение ..?
  2. SiteMap.CurrentNode имеет значение Null / Nothing (в AuthorizeCore ()), если запрашиваемая страница недоступна для пользователя (очевидно). Как мне изменить мою реализацию? Я хочу сохранить функциональность, состоящую в том, что Page объекты загружаются только один раз, поэтому мне нужно хранить их где-то ... Я очень растерян / психическая блокировка.

1 Ответ

0 голосов
/ 04 февраля 2010

В настоящее время у меня есть 2 карты сайта. Один с включенным, а другой без включенной защиты.

...