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
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
[Authorize(Roles="Admin")]
Si je teste dans le controller, c'est pareil il ne rentre pas dans la méthode redéfinie
1 2 3
| if(User.IsInRole("Admin")){
} |
Par contre si je fais ceci, là il rentre bien dans mes méthodes
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
Partager