1
我有一個自定義SiteMapProvider
,我從數據庫填充。我也有一個自定義SiteMapNode
這是必須與自定義Page
參數構造。從數據庫中有效載入網站地圖?
的SiteMapProvider.IsAccessibleToUser(context, node)
實現現在是:
Public Overrides Function IsAccessibleToUser(context, node) As Boolean
Return CType(node, CustomSiteMapNode).Page.IsAccessibleToUser(context.User)
End Function
我也有一個自定義authentication class-attribute
:
Public Class ValidateAuthorization : Inherits AuthorizeAttribute
Public Sub New()
End Sub
Protected Overrides Function AuthorizeCore(context) As Boolean
If Not CType(SiteMap.CurrentNode, JrcSiteMapNode).Page.IsAccessibleToUser(httpContext.User) Then
Throw New ApplicationException()
End If
Return True
End Function
End Class
兩個問題:
- 我應該在AuthorizeCore()中返回false以使所有內容都按照默認授權協議工作嗎? (這些是什麼?)或者我應該拋出我的例外..?
- SiteMap.CurrentNode是空/沒有(在AuthorizeCore()),如果被請求的頁面不給用戶(顯然)訪問。 我應該如何更改我的實施?我想保留
Page
對象只加載一次的功能,所以我需要將它們存儲在某處...我很困惑/心理阻塞。