2
我有一個自定義SiteMapProvider
(從數據庫填充)和一個自定義AuthorizeAttribute
(驗證當前用戶角色+請求的頁面與Role_Page數據庫)的控制器類。自定義AuthorizeAttribute +自定義SiteMapProvider相關?
我必須執行功能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