У меня есть пользовательский SiteMapProvider
(заполненный из базы данных) и пользовательский AuthorizeAttribute
(проверяет роли текущих пользователей + запрошенная страница в базе данных Role_Page) для классов контроллера.
Я должен реализовать функцию SiteMapProvider.IsAccessibleToUser(context, node)
. Я также должен реализовать AuthorizeAttribute.AuthorizeCore(context)
.
Как связаны эти две функции? Есть ли какой-нибудь способ ' атрибут ' SiteMapProvider?
Код:
edit: Может ли это быть решением (внутри 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