coutume AuthorizeAttribute + SiteMapProvider personnalisé lié?
-
20-09-2019 - |
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
La solution
J'utilise actuellement la SiteMapProvider par défaut deux fois.