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

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

如何在这两个功能有关系吗?是不是有一些方法来 '的属性的' 的SiteMapProvider?

一些代码:


修改 <强> 也许这是溶液(内部AuthorizeCore() 然而contextHttpContextBase,和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
有帮助吗?

解决方案

我目前使用默认sitemapprovider两次。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top