пользовательский атрибут AuthorizeAttribute + пользовательский SiteMapProvider связаны?

StackOverflow https://stackoverflow.com/questions/2052826

Вопрос

У меня есть обычай SiteMapProvider (заполняется из базы данных) и пользовательский AuthorizeAttribute (проверяет текущие роли пользователей + запрошенную страницу по базе данных Role_Page) для классов контроллеров.

Я должен реализовать эту функцию SiteMapProvider.IsAccessibleToUser(context, node).Я также должен реализовать AuthorizeAttribute.AuthorizeCore(context).

Как связаны эти две функции?Разве нет какого- нибудь способа 'атрибут' одобритель сайта?

Какой - то код:


Редактировать: Может ли это быть решением (внутри 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
Это было полезно?

Решение

В настоящее время я дважды использую sitemapprovider по умолчанию.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top