Pregunta

Tengo un SiteMapProvider personalizado (poblada de base de datos) y una AuthorizeAttribute personalizado (valida los usuarios actuales funciones + página solicitada contra la base de datos de Role_Page) para las clases de controlador.

Tengo que poner en práctica el SiteMapProvider.IsAccessibleToUser(context, node) función. También tengo que poner en práctica AuthorizeAttribute.AuthorizeCore(context).

¿Cómo se relacionan estas dos funciones? ¿No hay alguna manera de ' atributo ' el SiteMapProvider?

Algunos código:


editar ¿Podría ser esto una solución (en el interior AuthorizeCore()) context sin embargo es HttpContextBase y IsAccessibleToUser() sólo toma HttpContext como? parámetro.

If Not SiteMap.Provider.IsAccessibleToUser(context, SiteMap.CurrentNode) Then

código actual:

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
¿Fue útil?

Solución

Actualmente utilizo el SiteMapProvider por defecto dos veces.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top