Précédent   Forum du club des développeurs et IT Pro > Dotnet > Développement Web avec .NET > ASP.NET
ASP.NET ASP.NET -Forum d'entraide sur le Développement Web en ASP.NET. Avant de poster -> FAQ ASP.NET, Articles ASP.NET
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 04/01/2013, 09h48   #1
yohannp
Candidat au titre de Membre du Club
 
Homme Yohann PANSARD
Ingénieur développement logiciels
Inscription : avril 2010
Messages : 7
Détails du profil
Informations personnelles :
Nom : Homme Yohann PANSARD
Âge : 25
Localisation : France, Côte d'Or (Bourgogne)

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : avril 2010
Messages : 7
Points : 11
Points : 11
Envoyer un message via MSN à yohannp
Par défaut Authentification à l'aide des rôles ASPNET : problème définition des droits d'accès.

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 :

Code :
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>
Ce code doit autoriser tous les users qui sont dans le rôle "Dev" et refuser tous les autres.

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.

Code :
1
2
 
<allow users="yohann.pansard@gmail.com"/>
J'ai vérifié plusieurs fois dans ma table Aspnet_usersinroles et tout est bon.

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 :

Code :
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>
En fait, j'ai l'impression que le lien ne se fait pas entre le user et ses rôles ?

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.
yohannp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/01/2013, 23h30   #2
Immobilis
Expert Confirmé Sénior

 
Avatar de Immobilis
 
Inscription : mars 2004
Messages : 6 387
Détails du profil
Informations forums :
Inscription : mars 2004
Messages : 6 387
Points : 7 054
Points : 7 054
Salut,

Est-ce que la valeur du rôle de l'objet utilisateur correspond bien?

A+
Immobilis est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/01/2013, 09h41   #3
yohannp
Candidat au titre de Membre du Club
 
Homme Yohann PANSARD
Ingénieur développement logiciels
Inscription : avril 2010
Messages : 7
Détails du profil
Informations personnelles :
Nom : Homme Yohann PANSARD
Âge : 25
Localisation : France, Côte d'Or (Bourgogne)

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : avril 2010
Messages : 7
Points : 11
Points : 11
Envoyer un message via MSN à yohannp
Bonjour Immobilis,

Merci de prendre le temps de regarder mon problème.

Citation:
Envoyé par Immobilis Voir le message
Salut,

Est-ce que la valeur du rôle de l'objet utilisateur correspond bien?

A+
La valeur est bien la bonne. J'ai d'ailleurs essayé avec le RoleName et le LoweredRoleName de la BDD mais ça ne change rien.

Pour m'assurer que le user est bien dans le rôle, j'ai contrôlé depuis l'espion que le user connecté possède bien le rôle 'dev', ce qui est le cas.
Code :
Roles.IsUserInRole(User.Identity.Name, "Dev")
retourne true et
Code :
Roles.GetRolesForUser(User.Identity.Name)
me retourne bien un tableau de string avec une seule valeur qui est le rôle Dev.

Pour autant, je ne peux toujours pas accéder à elmah.axd

Chose bizarre, j'ai fais un test avec une bête page html dans un dossier qui possédait son propre web.config, le problème est le même...

Pour le moment, je sèche totalement sur l'origine du problème !
yohannp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/01/2013, 23h31   #4
Immobilis
Expert Confirmé Sénior

 
Avatar de Immobilis
 
Inscription : mars 2004
Messages : 6 387
Détails du profil
Informations forums :
Inscription : mars 2004
Messages : 6 387
Points : 7 054
Points : 7 054
N'ayant pas la solution sous le coude, revois les étapes ici: http://msdn.microsoft.com/en-us/libr...ht000013_step4
Immobilis est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 06h48.


 
 
 
 
Partenaires

Hébergement Web