benutzerdefinierte autorizeattribute + benutzerdefinierte sitemapprovider verwandte?
-
20-09-2019 - |
Frage
Ich habe einen Brauch SiteMapProvider
(aus der Datenbank besiedelt) und ein benutzerdefinierter AuthorizeAttribute
(Validiert aktuelle Benutzerrollen + angeforderte Seite gegen Rollen -Datenbank) für Controller -Klassen.
Ich muss die Funktion implementieren SiteMapProvider.IsAccessibleToUser(context, node)
. Ich muss auch implementieren AuthorizeAttribute.AuthorizeCore(context)
.
Wie hängen diese beiden Funktionen zusammen? Gibt es keinen Weg zu 'Attribut'Der Sitemapprovider?
Ein Code:
bearbeiten: Könnte dies eine Lösung sein (im Inneren AuthorizeCore()
)? context
Jedoch ist HttpContextBase
, und IsAccessibleToUser()
nur nimmt HttpContext
als Parameter.
If Not SiteMap.Provider.IsAccessibleToUser(context, SiteMap.CurrentNode) Then
Aktueller Code:
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
Lösung
Derzeit verwende ich den Standard -Sitemapprovider zweimal.