从数据库高效加载站点地图?

时间:2010-01-13 17:57:51

标签: asp.net-mvc vb.net authentication authorization sitemap

我有一个自定义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. 我应该在AuthorizeCore()中返回false以使一切按照默认授权协议工作吗? (这些是什么?)或者我应该抛出异常..?
  2. 如果用户无法访问所请求的页面(显然),则SiteMap.CurrentNode为Null / Nothing(在AuthorizeCore()中)。 我应该如何更改我的实施?我想保留Page对象只加载一次的功能,所以我需要将它们存储在某个地方...... 我很困惑/心理阻塞。

1 个答案:

答案 0 :(得分:0)

我目前有2个站点地图。一个用,一个没有启用安全修整。