Taglio della sicurezza della Sitemap utilizzando solo gli attributi dei ruoli e non consentire / negare regole altrove
-
06-07-2019 - |
Domanda
Sono consapevole che il tag ha i "ruoli" " attributo per compensare i nodi che non hanno " url " attributo, che può essere risolto in altri modi. Non mi interessano questi altri modi, però, vorrei avere tutte le mie autorizzazioni impostate nel mio file Sitemap. Come realizzare questo?
Sto usando RoleProvider personalizzato, MembershipProvider personalizzato e XmlSiteMapProvider predefinito. Ho anche un modulo IHttp di sicurezza per impedire alle persone di arrivarci utilizzando un URL diretto. Sono aperto a diversi approcci.
Grazie in anticipo!
Soluzione
Puoi implementare il tuo XmlSiteMapProvider e sovrascrivere il metodo IsAccessibleToUser.
public override bool IsAccessibleToUser(HttpContext context, SiteMapNode node)
{
return <condition in which access is allowed>
}
Altri suggerimenti
Alla fine ho implementato il mio controllo della sicurezza derivando da XmlSiteMapProvider. Era abbastanza semplice.
public override SiteMapNodeCollection GetChildNodes(SiteMapNode node)
{
return CustomSecurityTrim(base.GetChildNodes(node));
}