Bonjour à tous,
pour commencer, une bonne année à tout ceux qui me liront.
Je vous expose mon problème sur lequel je bloque depuis plus d'une journée.
Dans le cadre de mon emploi, je travaille actuellement sur une application Aspnet MVC3 Razor pour la gestion de fiches diverses. L'accès au SI se fait via l’authentification par forms (Jusque là pas de problème).
J'utilise ELMAH pour les erreurs non catchées, ce qui me permet de traiter ces erreurs par la suite. ELMAH fournit une interface pour visualiser les erreurs. Cette interface est accessible via elmah.axd à la racine du site.
Comme les données affichées ne doivent pas être publiques, j'ai mis en place une règle dans le web.config :
Ce code doit autoriser tous les users qui sont dans le rôle "Dev" et refuser tous les autres.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 <location path="elmah.axd"> <system.web> <httpHandlers> <add verb="POST,GET,HEAD" path="elmah.axd" type="Elmah.ErrorLogPageFactory, Elmah" /> </httpHandlers> <authorization> <allow roles="Dev"/> <deny users="*" /> </authorization> </system.web> </location>
Or, si je me connecte avec un user qui est dans le rôle "Dev", l'accès à la page est refusé.
En revanche, si j'autorise l'utilisateur en particulier dans le web config, je peux accéder à la page sans problème.
J'ai vérifié plusieurs fois dans ma table Aspnet_usersinroles et tout est bon.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2<allow users="yohann.pansard@gmail.com"/>
Mon roleManager doit être bon puisque je me sers de ces mêmes rôles dans l'application (par exemple Role.IsUserInRoles("toto", "reader")). Au cas où, voici la configuration de mon rolemanager :
En fait, j'ai l'impression que le lien ne se fait pas entre le user et ses rôles ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 <roleManager enabled="true" cacheRolesInCookie="false" defaultProvider="AspNetSqlRoleProvider"> <providers> <clear /> <add name="AspNetSqlRoleProvider" type="System.Web.Security.SqlRoleProvider" connectionStringName="ApplicationServices" applicationName="app_demo" /> </providers> </roleManager>
Je dois avoir oublié quelque chose, mais sincèrement, je ne vois pas quel peut être cet élément.
Est ce que quelqu'un pourrait m'aider svp ?
Merci d'avance pour vos réponses.
Partager