IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP.NET Discussion :

rediriger sur absence de role dans le MemberShip


Sujet :

ASP.NET

  1. #1
    Membre extrêmement actif
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Points : 1 434
    Points
    1 434
    Par défaut rediriger sur absence de role dans le MemberShip
    Salut

    J'ai mis en place un contrôle Login sur ma page de connexion avec la gestion du MemberShip.

    Mon site contient deux parties :
    - une partie publique avec une possibilité d'identification des membrs.
    - une partie administration uniquement accessible aprés identification

    Le membres du site sont placés dans un rôle "Membre" et les membres de la partie administration sont placé dans un rôle "Gestion".

    Je voudrais pouvoir faire le tri, c'est à dire, à la connexion sur la partie administration ne laisser passer que ceux qui font partie du rôle "Gestion".

    Mon souci est que je ne comprends pas trés bien les évènements que gère le contrôle Login. Je n'arrive pas trouver à quel moment le contrôle va dans la base de données pour trouver ses infos et permettre (ou pas) l'accés.
    Du coup, je trouve pas l'endroit du code où je dois placer mon contrôle de vérification de l'appartenance au Rôle.

    Pouvez vous m'aider ?

  2. #2
    CUCARACHA
    Invité(e)
    Par défaut
    Well,

    I'll try to explain ...

    En fait, il ne faut (surtout) pas toucher à la base de données. Il y a des classes pour ça, elles sont dotées de tous les outils dont tu as besoin pour faire ce que tu souhaites.

    Voir explications de Ditch (Un gentil modérateur)

    http://ditch.developpez.com/aspnet2/...pprovider/#LVI

    ++

    Laurent

  3. #3
    Membre extrêmement actif
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Points : 1 434
    Points
    1 434
    Par défaut
    Merci pour ton aide (et pour le trait d'humour.....)

    Le tuto de Ditch, je le connais presque par coeur.
    Mon souci n'est pas tout à fait là. En fait, je voudrais utiliser une des classes, le Isinrole pour être précis, mais j'arrive pas à le palcer correctement entre le LoggingIn, le LoggedIn et le Authenticate du contrôle.

    Visiblement, ça lui fait tou bizarre si on touche à l'Autheticate, il se mets à bugger.

    Et ensuite, le LoggingIn j'ai comme l'impression qu'il ne sait pas encore qui je suis, mais dans la LoggedIn il a l'air d'avoir trouver ce qu'il luifaut, mais passe le contrôle sans souci. Et si je mets le test là, ben ça passe quand même.

    Bref, j'ai un peu de mal à suivre le cheminement et placer mon test d'appartenance au rôle. Mais peut être aussi, que je me plante de méthode.

  4. #4
    CUCARACHA
    Invité(e)
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
                MembershipUser oCurrentUser = Membership.GetUser();
                if (Roles.FindUsersInRole("Gestion", oCurrentUser.UserName).lenght>0) {
      //Il est dans le rôle
    };

    ++

    Laurent
    Dernière modification par Lou Pitchoun ; 24/06/2008 à 15h56. Motif: dvp n'est pas un site musical.

  5. #5
    Membre extrêmement actif
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Points : 1 434
    Points
    1 434
    Par défaut
    Merci pour ton aide.

    Bref, j'avais pas vu cette méthode "FindUserInRole".
    A force de tripoter le machin, je crois que j'ai trouvé l'histoire que je cherche.

    Si je prend ton test et que je le colle dans LogginIn, il test avant d'envoyer l'authetification.
    Et si en plus, je place un FaillureText, ben il bloque de suite, affiche le texte et attend une nouvelle tentative.

    Bon, je vérifie tout ça de suite et je tiens au courant.

    PS : euh, faut que je traduise le C#, ça pas être facile....

  6. #6
    CUCARACHA
    Invité(e)
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Dim oCurrentUser as MembershipUser = Membership.GetUser();
    if Roles.FindUsersInRole("Gestion", oCurrentUser.UserName).lenght>0 then
      'Il est dans le rôle
    end if
    ++

    Laurent

  7. #7
    Membre extrêmement actif
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Points : 1 434
    Points
    1 434
    Par défaut
    Merci, la traduction c'était pour rire, je maitrise pas C#, mais j'avais réussi.

    J'ai mis un = à la place du >, l'idée étant de vérifier qu'il n'est PAS dans le rôle.
    Mais, par rapport à ce que j'ai dit juste avant, ben je me suis gourré sur le fait de metre un Faillure Text.
    Du coup, maintenant le test marche bien, ça passer dedans comme il faut mais je trouve pas le moyen de l'arrêter dans son processus.

    En gros, dans le IF (donc lorsqu'il vérifie que l'utilisateur n'est pas dans le rôle) il bloque le processus d'authentification. Et je truve pas la méthode à utiliser, et la MSDN n'est pas trés bavarde sur ce coup là.

    T'aurais pas une idée ?

  8. #8
    Membre extrêmement actif
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Points : 1 434
    Points
    1 434
    Par défaut
    Le seul truc que j'ai trouvé pour l'instant est un peu violent.

    J'ai mis un e.Cancel = True, mais du coup, ça n'affiche pas le message d'erreur ou alors je place pas le message dans la bonne case.

    Bref, je sèche un peu.

  9. #9
    CUCARACHA
    Invité(e)
    Par défaut Ton code
    Tu pourrais pas coller ton code en enlevant les noms et les mots de passe ?
    Ca serait quand meme plus facile pour t'aider

    ++

    Laurent

  10. #10
    Membre extrêmement actif
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Points : 1 434
    Points
    1 434
    Par défaut
    Oui, pas de soucis
    Voici le code côté HTML, juste le controle Login, le restant de la page étant fait avec une table pour positionner les choses
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <asp:login ID="logBase" runat="server" 
    	DestinationPageUrl="~/Outilweb/Liste_Modules.aspx"
    	PasswordRecoveryText="Mot de passe perdu ?"
    	PasswordRecoveryUrl="~/Outilweb/PasRecov.aspx" 
    	TitleText="" 
    	DisplayRememberMe="true"
    	RememberMeSet="true"
    	LoginButtonStyle-CssClass="bouton"
    	LoginButtonText="Connexion"></asp:login>
    Ensuite dans mon CodeBehind j'ai ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Protected Sub logBase_LoggingIn(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.LoginCancelEventArgs) Handles logBase.LoggingIn
    	Dim u As MembershipUser = Membership.GetUser(logBase.UserName)
    	If Roles.FindUsersInRole("NomRole", logBase.UserName).Length = 0 Then
    		logBase.FailureText = "Vous n'avez pas les droits pour accéder à cette partie du site"
    		e.Cancel = True
    	End If
    End Sub
    En l'état actuel des choses, si l'utilisateur n'appartient pas au rôle, ça bloque, mais ça n'affiche aucun message, donc il ne sait pas pourquoi il est bloqué.
    Je pense que le Cancel est un peu violent, mais je n'ai rien trouvé d'autre.

  11. #11
    CUCARACHA
    Invité(e)
    Par défaut
    Salut,

    Personnellement, je mettrais plutôt un Response.redirect vers une page "appologize"

    Ca sera beaucoup plus simple.

    Là tu te compliques la vie pour rien.

    ++

    Laurent

  12. #12
    Membre extrêmement actif
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Points : 1 434
    Points
    1 434
    Par défaut
    Ben en fait non, je trouve pas.
    je voulais exploiter les message du contrôle Login.
    il est bine capable de m'afficher une message si j'oublie le mot de passe ou si je mets un mauvais mot de passe.
    Pourquoi il pourrait pas prendre un critère sur l'appartenance au Rôle ?

    Parce que, la page "apologize", ok, mais aprés faut revenir. ça me fait pas mal de gestion que je préfèrerais éviter.


    Bon, je garde l'idée dans un coin, vu qu'elle est pas mauvaise, mais si tu as une autre idée ou si quelqu'un d'autre en a une, ben je prends.

  13. #13
    CUCARACHA
    Invité(e)
    Par défaut
    Si tu es editeur, ok pour passer autant de temps sur une telle fonction.
    Si tu es prestataire, fait la page apologize et demande au client s'il préfère une autre solution. Tu pourras facturer l'evol
    ++

    Laurent

  14. #14
    Membre extrêmement actif
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Points : 1 434
    Points
    1 434
    Par défaut
    Euh, en fait, je suis les trois !
    Je suis Prestataire parce que je bosse en SSII.
    Je suis éditeur parce que ce projet est pour l'autre boite d'une des patrons de la SSII
    Je suis Concepteur d'outils parce que le truc que je développe doit servir à tous les sites de tous les cleints, dans tous les cas.

    En plus de ça, je développe sur un principe un peu fou : une page, une seule et unique page pour tout gérer. Cette page va chercher dans la BDD les infos qu'il lui faut, en fonction de l'URL et des param de l'URL pôur savoir quels composants elle doit afficher.

    Le contrôle Login qui me préoccupe là est celui de l'entrée de l'espace d'administration du site, d'où l'appartenance à un rôle. C'est surtout pour ça que la page "Apologize" n'est pas une trés bonne solution pour moi, même si elle reste une bonne solution dans l'absolu.

    Vois tu ?

  15. #15
    CUCARACHA
    Invité(e)
    Par défaut
    Ahhh effectivement, la bretagne ça t'a gagné...

    En fait si tu mets tout dans la même page c'est comme si tu te coupais une jambe avant un 100 mètres ou que tu t'attachais les mains dans le dos avant un combat de boxe.

    Si tu veux faire comme ça, voici ce que je te suggère :

    Avant tout tu crée une classe qui hérite de Page qui contient toute la mécanique de ton usine a gaz à l'exception de l'identification.

    Ensuite, tu crées un répertoire par groupe d'utilisateur puis, dans chaque répertoire tu crée au moins une page, voir une master master page et des pages s'il y en a plusieur.

    Chacune de ces pages n'hérite plus de Page mais de ta classe.

    Ensuite, il te suffit de configurer les accès de ton projet avec l'interface de gestion de la sécurité et là tu es à nouveau dans les clous et tout roulera bien mieux

    Tu es d'accord avec ça ?

    ++

    Laurent

  16. #16
    Membre extrêmement actif
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Points : 1 434
    Points
    1 434
    Par défaut
    Oui, ok avec le principe.
    Sauf que j'en suis à 8 mois de développement et que ce que tu propose remets en cause tout le développement.

    Je vais réfléchir plus avant à cette solution, peut être que ça vaut le coup de tout mettre par terre pour tout remettre dans le bon ordre.

    Merci pour ton aide.

  17. #17
    CUCARACHA
    Invité(e)
    Par défaut
    Re

    Justement, ça ne remet rien en cause...

    Pense objet mon amis, pense objet

    Fait toi une maquette tu comprendras...

    ++

    Laurent

Discussions similaires

  1. Réponses: 5
    Dernier message: 25/10/2010, 14h11
  2. Réponses: 2
    Dernier message: 19/10/2009, 11h37
  3. [SP-2007] Commentez l'article sur l'émulation des roles dans Form Services !
    Par LefortLudovic dans le forum SharePoint
    Réponses: 1
    Dernier message: 25/08/2009, 15h27
  4. Sur absence dans liste + ajout
    Par psychopat dans le forum VBA Access
    Réponses: 4
    Dernier message: 19/07/2008, 15h00
  5. Réponses: 6
    Dernier message: 09/01/2007, 15h12

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo