2

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

我必须执行功能SiteMapProvider.IsAccessibleToUser(context, node)。我也必须执行AuthorizeAttribute.AuthorizeCore(context)

这两个函数是如何关联的? '属性'的SiteMapProvider没有一些方法吗?

一些代码:


编辑:也许这是一个解决方案(内AuthorizeCore())?context然而是HttpContextBaseIsAccessibleToUser()只需要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 

回答

0

我目前使用的默认sitemapprovider两次。