asp.net 2.0 menu og securitytrimming
Jeg forsøger at få securitytrimming til at virke så min menu, der er opbygget ud fra et sitemap viser menupunkterne afhængig af den påloggede brugers rolle. Jeg har kigget i lignende spørgsmål her på sitet men har ikke kunnet få det til at virke.Jeg har 2 sitemap filer - en til det "offentlige site" hvor securitytrimming ikke er enabled, og så en admin.sitemap.
Min web.config i roden af sitet har følende:
<roleManager enabled="true" defaultProvider="AccessRoleProvider" cacheRolesInCookie="false" cookieName=".ASPXROLES" cookieTimeout="30" cookiePath="/" cookieRequireSSL="false" cookieSlidingExpiration="true" cookieProtection="All">
<providers>
<add name="AccessRoleProvider" type="Samples.AccessProviders.AccessRoleProvider, AccessProviders" connectionStringName="AccessFileName" applicationName="RBK" />
</providers>
</roleManager>
<siteMap defaultProvider="XmlSiteMapProvider" enabled="true">
<providers>
<add name="XmlSiteMapProvider" description="Default SiteMap provider." type="System.Web.XmlSiteMapProvider" siteMapFile="Web.sitemap" securityTrimmingEnabled="false" />
<add name="AdminXmlSiteMapProvider" description="Admin SiteMap provider." type="System.Web.XmlSiteMapProvider" siteMapFile="admin.sitemap" securityTrimmingEnabled="true" />
</providers>
</siteMap>
Og i admin.sitemap er der bl.a. følgende:
<siteMapNode url="~/admin/default.aspx?id=home" title="Home" description="Startside" roles="*">
<siteMapNode url="~/admin/default.aspx?id=brugere" title="Brugere" description="Vælg et underpunkt for at administrere Brugere" roles="admin" >
<siteMapNode url="~/admin/brugeradm/opretbruger.aspx" title="Opret bruger" description="Opret en bruger til systemet" roles="admin"/>
</siteMapNode>
</siteMapNode>
Jeg har 2 testbrugere - den ene i rollen admin, og den anden i rollen editor. Men begge brugere kan fint se de menupunkterne hvor roles="admin" er angivet.
I mappen admin har jeg også en web.config der indeholder følgende:
<authorization>
<allow roles="admin,editor"/>
<deny users="*"/>
</authorization>
Udfra de spørgsmål jeg ellers har fundet om securitytrimming har jeg også prøvet i web.config i roden at tilføje følgende uden held
<location path="~/admin/brugeradm/opretbruger.aspx">
<system.web>
<authorization>
<allow roles="admin"/>
<deny roles="editor"/>
</authorization>
</system.web>
</location>
Sig endelig til hvis der mangler flere informationer.
Selv hvis tricket med location path kan komme til at virke (det kan jo være jeg har glemt en detalje et sted) vil jeg være lidt træt af at proppe ekstra authorization på hver fil under admin for at sortere menupunkterne fra (selvom jeg formoder at det så giver den ekstra grad af sikkerhed at en forkert rolle slet ikke kan loade siden i stedet for kun at skjule menupunktet for en rolle!? Men det at skjule menupunktet er sikkerhed nok i dette tilfælde).
Er det muligt at lave en databinding metode når menuen opbygges, hvor jeg så selv kan tjekke på om brugerens rolle er i listen af roller angivet for menupunktet i admin.sitemap? Hvis ja, er der så en der kan lave et hurtigt C# eksempel?