Bonjour,

Je fais une petite application web et je voudrais bien utiliser mes propres tables pour les user et roles.
J'ai donc commencé par créer une table user, role et userrole.
Ensuite j'ai créé 2 classes héritant de membershipProvider (dans laquelle j'ai redéfini validateuser) et une classe héritant de roleprovider (dans laquelle j'ai redéfini IsUserInRole et GetRolesForUser)

J'ai modifié mon web.config
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<membership defaultProvider="CustomMembershipProvider">
      <providers>
        <add name="CustomMembershipProvider"  type="SocialLink.Models.Custom.CustomMembershipProvider" connectionStringName="SocialNetworkLinkEntities" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" applicationName="/" />
      </providers>
    </membership>
    <roleManager defaultProvider="CustomRoleProvider" enabled="true" cacheRolesInCookie="true"
      cookieName="AppRoles"
      cookieTimeout="20"
      cookiePath="/"
      cookieRequireSSL="false"
      cookieSlidingExpiration="true"
      cookieProtection="All">
 
      <providers>
        <add name="CustomRoleProvider" type="SocialLink.Models.Custom.CustomRoleProvider" connectionStringName="SocialNetworkLinkEntities" applicationName="/" />
      </providers>
    </roleManager>
L'authentification fonctionne correctement et il passe bien dans mon validate User mais pour ce qui est des rôles, j'ia mis des points d'arrêts dans les 2 méthodes que j'ai récri mais jamais il n'y passe.

j'ai rajouté au dessus d'une action controller mais il ne teste rien et me redirige de suite vers la page de login
Code : Sélectionner tout - Visualiser dans une fenêtre à part
[Authorize(Roles="Admin")]
Si je teste dans le controller, c'est pareil il ne rentre pas dans la méthode redéfinie
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
if(User.IsInRole("Admin")){
 
            }
Par contre si je fais ceci, là il rentre bien dans mes méthodes
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
string[] test = Roles.GetRolesForUser("test@gmail.com");
            bool t = Roles.IsUserInRole("test@gmail.com", "admin");
Je ne comprends pas ce que je fais de mal pour que l'annotation "[Authorize(Roles="Admin")]" ne fonctionne pas

Merci de votre aide