none
Override class RoleProvider RRS feed

  • Question

  • Bonjour,

    Je fais une petite application web MVC 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

    <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

    if(User.IsInRole("Admin")){
     
                }


    Par contre si je fais ceci, là il rentre bien dans mes méthodes

    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

    samedi 1 février 2014 10:21

Réponses