2010-01-13 5 views
1

J'ai un SiteMapProvider personnalisé que je remplis à partir d'une base de données. J'ai également une coutume SiteMapNode qui doit être construite avec un argument Page personnalisé.Chargement efficace du plan du site à partir de la base de données?

La mise en œuvre de SiteMapProvider.IsAccessibleToUser(context, node) est maintenant:

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

J'ai aussi une coutume 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 

Deux questions:

  1. Dois-je retourner false dans AuthorizeCore() pour que tout fonctionne selon les protocoles d'autorisation par défaut? (Qu'est-ce que c'est?) Ou devrais-je jeter mon exception ..?
  2. SiteMap.CurrentNode est Null/Nothing (dans AuthorizeCore()) si la page demandée n'est pas accessible à l'utilisateur (évidemment). Comment devrais-je changer ma mise en œuvre? Je veux garder la fonctionnalité que les objets Page ne sont chargés qu'une seule fois, donc j'ai besoin de les stocker quelque part ... Je suis très confus/blocage mental.

Répondre

0

J'ai actuellement 2 sitemaps. Un avec, et un sans suppression de sécurité activé.

Questions connexes