2

我有一个用于控制器类的自定义SiteMapProvider(从数据库填充)和一个自定义AuthorizeAttribute(验证当前用户角色 + 针对 Role_Page 数据库请求的页面)。

我必须实现该功能SiteMapProvider.IsAccessibleToUser(context, node)。我也必须实施AuthorizeAttribute.AuthorizeCore(context)

这两个函数有什么关系?是否有某种方法可以对 SiteMapProvider 进行“属性化”?

一些代码:


编辑: 这可能是一个解决方案(内部AuthorizeCore())吗? context然而是HttpContextBase,并且IsAccessibleToUser()HttpContext作为参数。

If Not SiteMap.Provider.IsAccessibleToUser(context, SiteMap.CurrentNode) Then

当前代码:

Public Class CustomValidateAuthorization : Inherits AuthorizeAttribute
    Public Sub New()

    End Sub

    Protected Overrides Function AuthorizeCore(ByVal httpContext As System.Web.HttpContextBase) As Boolean
        If Not Global.Page.IsAccessibleToUser(httpContext.User) Then
            //Exception or redirect (in exception)?
            // or return false?
        End If

        Return True
    End Function
End Class

Public Class CustomSiteMapProvider : Inherits StaticSiteMapProvider
Public Overrides Function IsAccessibleToUser(ByVal context As System.Web.HttpContext, ByVal node As System.Web.SiteMapNode) As Boolean
    Dim p As New BLL.Page
    p.LoadFromSiteMapNode(node)

    Return p.IsAccessibleToUser(context.User)
End Function
End Class
4

1 回答 1

0

我目前使用默认的站点地图提供程序两次。

于 2010-02-04T13:52:46.887 回答