Hallo,
Sinds vandaag zit ik met een vreemd probleem in asp.net (2.0) bij het gebruik van een sitemapprovider icm een roleprovider.
Zodra ik in de functie IsAccessibleToUser (aanroepen door SiteMapProvider bij het opbouwen van de menustructuur) wil controlleren of de gebruiker toegang heeft tot de pagina, gebeuren er rare dingen. Bij de aanroep van de volgende regel:
Word er niet naar de funcite IsUserInRole gesprongen, maar naar de functie GetRolesForUser.
hasaccess is hierdoor altijd true, ook als een gebruiker geen rechten voor die pagina heeft. Vreemd is ook dat bij de 2e keer steppen door IsAccessibleToUser(voor 2e node), de debugger niet meer in IsUserInRole stepped, maar deze "overslaat" en hasaccess direct op true zet.
De implementatie van IsAccessibleToUser is weinig spannend:
Als ik vervolgens de code van IsUserInRole ergens anders (losstaand) test, lijkt deze ook gewoon te werken. Waarom deze vervolgens mij gebruikt word op het moment dat ik hem nodig heb is me een raadsel.
is er hier iemand die hier meer ervaring mee heeft, en misschien een idee heeft wat er precies fout gaat?
Precieze implementatie van de functies lijkt me niet nodig, vandaar dat ik deze niet gepost heb
Sinds vandaag zit ik met een vreemd probleem in asp.net (2.0) bij het gebruik van een sitemapprovider icm een roleprovider.
Zodra ik in de functie IsAccessibleToUser (aanroepen door SiteMapProvider bij het opbouwen van de menustructuur) wil controlleren of de gebruiker toegang heeft tot de pagina, gebeuren er rare dingen. Bij de aanroep van de volgende regel:
C#:
1
| hasaccess = System.Web.Security.Roles.IsUserInRole(username, rolename); |
Word er niet naar de funcite IsUserInRole gesprongen, maar naar de functie GetRolesForUser.
hasaccess is hierdoor altijd true, ook als een gebruiker geen rechten voor die pagina heeft. Vreemd is ook dat bij de 2e keer steppen door IsAccessibleToUser(voor 2e node), de debugger niet meer in IsUserInRole stepped, maar deze "overslaat" en hasaccess direct op true zet.
De implementatie van IsAccessibleToUser is weinig spannend:
C#:
1
2
3
4
5
6
7
8
| public override bool IsAccessibleToUser(HttpContext context, SiteMapNode node) { bool hasaccess = false; string rolename = node.Roles[0].ToString(); string username = context.User.Identity.Name; hasaccess = System.Web.Security.Roles.IsUserInRole(username, rolename); return hasaccess; } |
Als ik vervolgens de code van IsUserInRole ergens anders (losstaand) test, lijkt deze ook gewoon te werken. Waarom deze vervolgens mij gebruikt word op het moment dat ik hem nodig heb is me een raadsel.
is er hier iemand die hier meer ervaring mee heeft, en misschien een idee heeft wat er precies fout gaat?
Precieze implementatie van de functies lijkt me niet nodig, vandaar dat ik deze niet gepost heb
[ Voor 11% gewijzigd door BM op 20-12-2005 13:30 ]
Xbox
Even the dark has a silver lining | I'm all you can imagine times infinity, times three