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兩次。