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 :

ajouter rôle avec le createUserWizard


Sujet :

ASP.NET

  1. #1
    Membre confirmé
    Inscrit en
    Octobre 2008
    Messages
    107
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 107
    Par défaut ajouter rôle avec le createUserWizard
    Bonjour,

    J'ai rajouter un dropDownList dans mon createUserWizard et j'aimerais le charger avec une table des rôles. 1er problème.
    L'utilisateur choisirait le rôle qui lui serait assigner à l'inscription. 2ème problème

    J'ai déjà implémenter une classe héritant de MemberShipProvider et une autre héritant de RoleProvider

    J'attends impatiement vos idées

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par polo86 Voir le message
    J'ai rajouter un dropDownList dans mon createUserWizard et j'aimerais le charger avec une table des rôles. 1er problème.
    La méthode statique Roles.GetAllRoles renvoie la liste des rôles définis, il suffit de définir cette liste comme DataSource de ton DropDownList

    Citation Envoyé par polo86 Voir le message
    L'utilisateur choisirait le rôle qui lui serait assigner à l'inscription. 2ème problème
    Tu peux rajouter des étapes personnalisées dans le wizard avec la propriété WizardSteps, où tu peux mettre à peu près ce que tu veux. Pour donner un rôle à un utilisateur, tu peux utiliser Roles.AddUserToRole

  3. #3
    Membre confirmé
    Inscrit en
    Octobre 2008
    Messages
    107
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 107
    Par défaut
    salut et merci pour tes pistes.

    J'ai défini ma méthode getAllRole() et je retrouve le dropdownlist de cette manière mais il n'y a pas de propriété datasource

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (DropDownList)CreateUserWizard1.CreateUserStep.ContentTemplateContainer.FindControl("ddlRoles")

    Lors de quel événement du createuserwizard je peux appeler la méthode addRoleToUser. createuser?

    merci

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par polo86 Voir le message
    il n'y a pas de propriété datasource
    Euh... si, il y en a une
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    DropDownList ddl = (DropDownList)CreateUserWizard1.CreateUserStep.ContentTemplateContainer.FindControl("ddlRoles");
    ddl.DataSource = getAllRoles();
    Citation Envoyé par polo86 Voir le message
    Lors de quel événement du createuserwizard je peux appeler la méthode addRoleToUser. createuser?
    Ben j'ai jamais fait, mais je dirais dans l'évènement CreatedUser...

  5. #5
    Membre confirmé
    Inscrit en
    Octobre 2008
    Messages
    107
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 107
    Par défaut
    Merci j'ai bien utilisé l'event createdUser pour créer le rôle mais maintenant lorsque j'utilise un composant login.
    Il exécute la méthode validateUser mais comment ça se passe au point de vue de son rôle?

    merci

  6. #6
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par polo86 Voir le message
    Merci j'ai bien utilisé l'event createdUser pour créer le rôle mais maintenant lorsque j'utilise un composant login.
    Il exécute la méthode validateUser mais comment ça se passe au point de vue de son rôle?
    C'est à dire ? je comprends pas bien ce que tu veux savoir exactement ? Pour vérifier si l'utilisateur appartient à un certain rôle, tu peux utiliser User.IsInRole("Nom du rôle")

  7. #7
    Membre confirmé
    Inscrit en
    Octobre 2008
    Messages
    107
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 107
    Par défaut
    Je me trompe p-e mais quand on utilise la db aspnet et qu'on se connecte via le composant login.
    Une fois que l'utilisateur est identifié son rôle est chargé pour tout le temps de sa session ouverte et on fait des sections rolegroup pour définir ce qu'on affiche.

    J'ai fait un pas à pas lorsque je confirme mon login mais il ne fait que le validateUser et à aucun moment ne regarde le role?!

    Désoler si je suis pas clair mais c'est pcq moi même je suis perturbé

  8. #8
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Il n'y a pas besoin de connaître le role pour authentifier un utilisateur, ça sert une fois qu'il est connecté pour restreindre l'accès à certaines pages ou certaines actions.

  9. #9
    Membre confirmé
    Inscrit en
    Octobre 2008
    Messages
    107
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 107
    Par défaut
    si je fais un truc du genre juste à titre d'exemple

    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    <asp:LoginView ID="LoginView1" runat="server">
            <AnonymousTemplate>
                <tr>
                    <td>
                        <span class="UserInfoText">you are logged in.</span>
                    </td>
                </tr>
                <tr>
                    <td>
                        &nbsp;&raquo;
                            <asp:LoginStatus ID="LoginStatus1" runat="server" CssClass="UserInfoLink" />
                        &nbsp;&laquo;   
                    </td>
                </tr>
            </AnonymousTemplate>
     
            <RoleGroups>
                <asp:RoleGroup Roles="administrateur">
                    <ContentTemplate>
                        <tr>
                    <td>
                        <asp:LoginName ID="LoginName2" runat="server"
                             FormatString="You are logged in as <b>{0}</b>." CssClass="UserInfoText" />
                    </td>
                </tr>
                <tr>
                    <td>
                        &nbsp;&raquo;
                            <asp:LoginStatus ID="LoginStatus2" runat="server" CssClass="UserInfoLink" />
                        &nbsp;&laquo;   
                    </td>
                </tr>
                <tr>
                    <td>
                        &nbsp;&raquo;
                        <a class="UserInfoLink" href="CatalogAdmin.aspx" >Catalog Admin</a>
                        &nbsp;&laquo;
                    </td>
                </tr>
                <tr>
                    <td>
                        &nbsp;&raquo;
                        <a class="UserInfoLink" href="ShoppingCartAdmin.aspx">Shopping Cart Admin</a>
                        &nbsp;&laquo;
                    </td>
                </tr>
                    </ContentTemplate>
                </asp:RoleGroup>
            </RoleGroups>
        </asp:LoginView>
    Comment est ce qu'il sait si la personne authentifiée est un administrateur et comment je dois faire pour qu'il vérifie le rôle?

    merci et désoler si mes questions sont cons

  10. #10
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par polo86 Voir le message
    Comment est ce qu'il sait si la personne authentifiée est un administrateur et comment je dois faire pour qu'il vérifie le rôle?
    de la même façon que tu peux le faire en code-behind avec User.IsInRole je suppose...

  11. #11
    Membre confirmé
    Inscrit en
    Octobre 2008
    Messages
    107
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 107
    Par défaut
    Je vois vraiment pas comment faire pcq la partie de code que j'ai mise fonctionne avec une db aspnet de base sans écrire une ligne de code behind.
    Juste lors de l'authentification, le système connait le rôle de l'utilisateur.
    Celà ne devrait pas être pareil pour un provider hérité?

  12. #12
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    en fait, en relisant la discussion, je réalise que tu n'as toujours pas vraiment expliqué quel est ton problème...
    Ton truc marche pas ? Il devrait faire quoi, et il fait quoi ?
    Essaie de donner des informations précises sur ce que tu essaies de faire, je peux pas tout deviner...

  13. #13
    Membre confirmé
    Inscrit en
    Octobre 2008
    Messages
    107
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 107
    Par défaut
    J'ai créé mon membershipProvider pour créer mon utilisateur avec le createuserwizard dans une table mysql.
    puis j'ai créé une classe roleprovider pour assigner un role à l'utilisateur qu'on crée. le role est forcément aussi stocké dans une table mysql.
    Maintenant à la connection via le composant login j'aimerais qu'en fonction du role de l'user qui vient de se loggué.
    Afficher différentes colonnes d'un gridview et là je coince.

    Je pense que c'est un peu plus clair

  14. #14
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Je pense qu'il faut que tu crées autant de RoleGroup qu'il y a de groupes, et que tu mettes un GridView dans chaque RoleGroup, avec des colonnes différentes. Visiblement tu as compris le principe du RoleGroup, donc je vois pas bien ce qui te pose problème...

  15. #15
    Membre confirmé
    Inscrit en
    Octobre 2008
    Messages
    107
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 107
    Par défaut
    Salut et merci du temps que tu passes.

    J'ai fait ce que tu as dit, j'ai créé mes 3 role group et chaque fois le grid avec les colonnes a afficher ou non en fonction du role.
    Le problème est que maintenant mon grid n'existe plus dans le code behind.
    Voici le code:

    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    <asp:LoginView ID="loginView" runat="server">
         <RoleGroups>
                <asp:RoleGroup Roles="admin">
                    <ContentTemplate>
                        <asp:GridView ID="grid" runat="server" AutoGenerateColumns="False" 
                        DataKeyNames="cli_id" onrowcancelingedit="grid_RowCancelingEdit" 
                        onrowdeleting="grid_RowDeleting" onrowediting="grid_RowEditing"  Width="100%">
                            <Columns>
                                <asp:BoundField DataField="cli_nom" HeaderText="Nom" SortExpression="cli_nom" />
                                <asp:BoundField DataField="cli_prn" HeaderText="Prénom" 
                                    SortExpression="cli_prn" />
                                <asp:BoundField DataField="cli_mail" HeaderText="Mail" 
                                    SortExpression="cli_mail" />
                                <asp:HyperLinkField DataNavigateUrlFields="cli_id" Text="Voir détails" 
                                    DataNavigateUrlFormatString="../AddClient.aspx?ClientID={0}" />
                                <asp:HyperLinkField DataNavigateUrlFields="cli_id" 
                                    DataNavigateUrlFormatString="../AddDomaine.aspx?ClientID={0}" 
                                    Text="Créer domaine" />
                                <asp:HyperLinkField DataNavigateUrlFields="cli_id" 
                                    DataNavigateUrlFormatString="../AddClient.aspx?ClientIDModif={0}" 
                                    Text="Modifier" />
                                <asp:ButtonField CommandName="Delete" Text="Supprimer" Visible="false" />
                            </Columns>
                        </asp:GridView>
                    </ContentTemplate>
                </asp:RoleGroup>
                <asp:RoleGroup Roles="super admin">
                    <ContentTemplate>
                        <asp:GridView ID="grid" runat="server" AutoGenerateColumns="False" 
                        DataKeyNames="cli_id" onrowcancelingedit="grid_RowCancelingEdit" 
                        onrowdeleting="grid_RowDeleting" onrowediting="grid_RowEditing"  Width="100%">
                            <Columns>
                                <asp:BoundField DataField="cli_nom" HeaderText="Nom" SortExpression="cli_nom" />
                                <asp:BoundField DataField="cli_prn" HeaderText="Prénom" 
                                    SortExpression="cli_prn" />
                                <asp:BoundField DataField="cli_mail" HeaderText="Mail" 
                                    SortExpression="cli_mail" />
                                <asp:HyperLinkField DataNavigateUrlFields="cli_id" Text="Voir détails" 
                                    DataNavigateUrlFormatString="../AddClient.aspx?ClientID={0}" />
                                <asp:HyperLinkField DataNavigateUrlFields="cli_id" 
                                    DataNavigateUrlFormatString="../AddDomaine.aspx?ClientID={0}" 
                                    Text="Créer domaine" />
                                <asp:HyperLinkField DataNavigateUrlFields="cli_id" 
                                    DataNavigateUrlFormatString="../AddClient.aspx?ClientIDModif={0}" 
                                    Text="Modifier" />
                                <asp:ButtonField CommandName="Delete" Text="Supprimer" />
                            </Columns>
                        </asp:GridView>
                    </ContentTemplate>
                </asp:RoleGroup>
                <asp:RoleGroup Roles="utilisateur">
                    <ContentTemplate>
                        <asp:GridView ID="grid" runat="server" AutoGenerateColumns="False" 
                        DataKeyNames="cli_id" onrowcancelingedit="grid_RowCancelingEdit" 
                        onrowdeleting="grid_RowDeleting" onrowediting="grid_RowEditing"  Width="100%">
                            <Columns>
                                <asp:BoundField DataField="cli_nom" HeaderText="Nom" SortExpression="cli_nom" />
                                <asp:BoundField DataField="cli_prn" HeaderText="Prénom" 
                                    SortExpression="cli_prn" />
                                <asp:BoundField DataField="cli_mail" HeaderText="Mail" 
                                    SortExpression="cli_mail" />
                                <asp:HyperLinkField DataNavigateUrlFields="cli_id" Text="Voir détails" 
                                    DataNavigateUrlFormatString="../AddClient.aspx?ClientID={0}" />
                                <asp:HyperLinkField DataNavigateUrlFields="cli_id" 
                                    DataNavigateUrlFormatString="../AddDomaine.aspx?ClientID={0}" 
                                    Text="Créer domaine" Visible="false" />
                                <asp:HyperLinkField DataNavigateUrlFields="cli_id" 
                                    DataNavigateUrlFormatString="../AddClient.aspx?ClientIDModif={0}" 
                                    Text="Modifier" />
                                <asp:ButtonField CommandName="Delete" Text="Supprimer" Visible="false" />
                            </Columns>
                        </asp:GridView>
                    </ContentTemplate>
                </asp:RoleGroup>
            </RoleGroups>
    </asp:LoginView>


    Tant que j'y suis comment je fais pour autoriser mes 3 rôles?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <configuration>
      <location path="ClientInfo.ascx">
        <system.web>
          <authorization>
            <allow roles="super admin"/>
            <deny users="*"/>
          </authorization>
        </system.web>
      </location>
    Voilà si tu as une idée elle est la bienvenue et je pourrais enfin sortir de ça

    MErci encore

  16. #16
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par polo86 Voir le message
    Le problème est que maintenant mon grid n'existe plus dans le code behind.
    C'est parce qu'il est défini dans un template, il faut utiliser FindControl pour le retrouver :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    GridView grid = loginView.FindControl("grid") as GridView;
    Citation Envoyé par polo86 Voir le message
    De plus quand je définis l'autorisation dans mon web.config pour ce userControl.
    Il me met une erreur pour dire que la balise <location> doit etre dans la balise <configuration> et elle y est bien.
    Je ne suis pas sûr que tu puisses définir des autorisations pour un UserControl... ça n'aurait pas vraiment de sens : un utilisateur pourrait avoir accès à une page, mais pas à un UserControl qui est sur cette page ? et il y aurait quoi à la place ?

  17. #17
    Membre confirmé
    Inscrit en
    Octobre 2008
    Messages
    107
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 107
    Par défaut
    voilà j'ai trouvé pour récupérer la gridview de mon loginview

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    private gridview grid = (GridView)loginView1.FindControl("grid");
    Merci pour toute ton aide
    Il est bien possible de définir un role pour un userControl. C'est pcq mes gridview se trouvent dans un userControl que je dépose sur des pages

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AJAX] Ajout input avec valeur venant de XML
    Par zulot dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 01/02/2007, 12h05
  2. [XSLT] Ajouter "alt' avec une img
    Par casafree dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 12/06/2006, 15h23
  3. [D7] Ajout enregistrement avec composant Interbase
    Par jer64 dans le forum Bases de données
    Réponses: 9
    Dernier message: 23/02/2006, 22h49
  4. Requete SQL ajout Souci avec ""
    Par patrick55 dans le forum Access
    Réponses: 1
    Dernier message: 10/12/2005, 18h11
  5. problème ajout données avec db.execute et access
    Par Dauphind dans le forum Access
    Réponses: 2
    Dernier message: 29/11/2005, 12h03

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