Question

J'ai un SiteMapProvider personnalisé (peuplée de base de données) et un AuthorizeAttribute personnalisé (valide les rôles utilisateurs actuels + page demandée contre la base de données Role_Page) pour les classes de contrôleur.

Je dois mettre en œuvre la fonction SiteMapProvider.IsAccessibleToUser(context, node). Je dois aussi mettre en œuvre AuthorizeAttribute.AuthorizeCore(context).

Comment ces deux fonctions liées? N'y at-il un moyen de ' attribut la SiteMapProvider?

Une partie du code:


modifier Serait-ce une solution (à l'intérieur AuthorizeCore()) context est cependant HttpContextBase, et IsAccessibleToUser() ne prend HttpContext que? paramètre.

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

code actuel:

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
Était-ce utile?

La solution

J'utilise actuellement la SiteMapProvider par défaut deux fois.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top