personalizzato AuthorizeAttribute + SiteMapProvider personalizzati correlati?
-
20-09-2019 - |
Domanda
Ho un SiteMapProvider
personalizzato (popolata da database) e un AuthorizeAttribute
personalizzato (convalida gli utenti attuali ruoli + pagina richiesta contro la base di dati Role_Page) per classi controller.
Devo implementare la funzione SiteMapProvider.IsAccessibleToUser(context, node)
. Devo anche implementare AuthorizeAttribute.AuthorizeCore(context)
.
Come sono legate queste due funzioni? Non c'è un modo per ' di attributo ' il SiteMapProvider?
Alcuni codice:
modifica Potrebbe essere questa una soluzione (all'interno AuthorizeCore()
) context
però è HttpContextBase
, e IsAccessibleToUser()
solo prende HttpContext
come? parametro.
If Not SiteMap.Provider.IsAccessibleToUser(context, SiteMap.CurrentNode) Then
codice corrente:
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
Soluzione
Attualmente uso la SiteMapProvider predefinito due volte.