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 :

Menu dynamique et sécurité d'acces


Sujet :

ASP.NET

  1. #1
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Juin 2006
    Messages
    142
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2006
    Messages : 142
    Par défaut Menu dynamique et sécurité d'acces
    Bonjour,

    Dans un projet ASP.NEt webform je dois faire un menu dynamique càd la liste des pages a afficher se trouve dans la base de donnée. pour cela j'ai utilisé NavigationMenu les items s'affiche en fonction du groupe d'utilisateur (utilisateur 1 a le droit de voir 2 ecans sur 4 par exemple) tout fonctionne correctement voici le code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     MenuItem mn = new MenuItem();
                        mn.NavigateUrl = ge.Ecran.url;
                        mn.Text = ge.Ecran.libelle;
                        NavigationMenu.Items.Add(mn);

    J'ai remarqué que si je saisie directement l'url de la page dont je n'ai pas acces elle s'affiche hors justement le but n'est pas juste de cacher les liens.

    j'ai l'habitude de faire cela en Winform ce qui ne pose pas problème.!!

    Avez vous un idée pour bloquer complétement l'accès a ces pages non authorisé? avez vous une autre façon de faire ?

    Merci d'avance pour votre aide!!

  2. #2
    Expert confirmé
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Par défaut
    Salut,

    Il faut mettre en place un petit module qui va vérifier à l'entrée de la page que l'utilisateur à bien les permissions. Tu peux éventuellement te baser sur une structure de dossier "Admin", "User"?

    A+
    "Winter is coming" (ma nouvelle page d'accueil)

  3. #3
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Juin 2006
    Messages
    142
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2006
    Messages : 142
    Par défaut
    re merci pour la réponse!!

    J'ai pensé a mettre la liste des ecrans de l'utilisateur dans la session et faire la vérification au niveau du load de chaque page.
    est ce un bonne idée ? avez vous utilisé cette méthode ?
    (j'ai peur pour les performances!!

  4. #4
    Expert confirmé
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Par défaut
    Question session cela dépend de ton mode d'authentification. Question perfs pas de soucis.
    "Winter is coming" (ma nouvelle page d'accueil)

  5. #5
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Juin 2006
    Messages
    142
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2006
    Messages : 142
    Par défaut
    Citation Envoyé par Immobilis Voir le message
    Question session cela dépend de ton mode d'authentification...
    authentification par formulaire ( table utilisateur dans la base de donnée métier).

    en alogorithme j'ai pendu ce petit bout de code dans le load de la page About.aspx :
    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
     
    //verification si la session est bien rensigné ce qui veut dire aussi que l'utilisateur est connecté
    if (Session["UserSession"] != null)
                {
                    Boolean existe = false;
                    IList<GroupeEcran> lis = AuthentificationBusiness.GetInstance().GetEcranGroupeByIdGroupe(Convert.ToInt32(((Utilisateur)Session["UserSession"]).idGroupe));
     
                    foreach (GroupeEcran ge in lis)
                    {
                        if (ge.Ecran.url == "~/About.aspx")
                        {
                            existe = true;
                        }
     
                    }
     
                    if (existe == false)
                    {
                       Response.Redirect("~/Account/Erreur.aspx");
                    }
                }

  6. #6
    Expert confirmé
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Par défaut
    Ca me parait pas mal. Pour ce qui est des perfs si tu mets en mémoire la collection derrière cette méthode "GetEcranGroupeByIdGroupe" cela devrait aller. Le test d'une chaîne de caractère est pas forcement ce qu'il y a de mieux mais bon.

    EDIT: En réfléchissant un peu plus (réfléchissement Jean-Pierre!) c'est pas terrible... Fixer le nom de la page risque de se payer plus tard...
    "Winter is coming" (ma nouvelle page d'accueil)

  7. #7
    Expert confirmé
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Par défaut
    Si je comprend bien la sécurité de ton application se base sur l'appartenance d'un utilisateur et d'une page à un ou plusieurs groupes?
    Si c'est le cas, tu pourrais faire en sorte que toutes tes pages disposent d'une propriété (un entier 1, 2 ou 3) qui indiquent à quels groupes elles appartiennent. Tu fais la même chose pour les utilisateurs. Tu n'as plus qu'à comparer en faisant un truc du genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    bool hasAccess = utilisateur.GroupNumber <= maPage.GroupeNumber;
    Ainsi, si le groupe 1 est admin, le 2 superuser et le 3 user:
    • 1 a accès aux pages 1, 2 et 3;
    • 2 a accès aux page 2 et 3;
    • 3 aux pages 3.

    C'est le genre de processus que tu peux mettre facilement dans une classe de base dont héritent tes pages web. Dans le cas d'un problème d'accès tu redirige l'internaute.
    "Winter is coming" (ma nouvelle page d'accueil)

  8. #8
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Juin 2006
    Messages
    142
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2006
    Messages : 142
    Par défaut
    Bonjour,

    En fait dans mon cas, j'ai une modélisation centré sur Groupe. ça simplifie la création des utilisateurs.

    Un utilisateur appartient à un groupe et un groupe a le droit de consulter un ou plusieur écran.

    Le test d'une chaîne de caractère est pas forcement ce qu'il y a de mieux mais bon
    je suis d'accord avec toi mais vue que la comparaison porte sur le nom de ma page je pense que c'est pas très risqué ( je ne fais presque jamais de changement de nom de page)

    Merci beaucoup pour ton aide !!

  9. #9
    Expert confirmé
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Par défaut
    Citation Envoyé par mrkinfo Voir le message
    Merci beaucoup pour ton aide !!
    Tu as résolu ton problème?
    "Winter is coming" (ma nouvelle page d'accueil)

  10. #10
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Juin 2006
    Messages
    142
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2006
    Messages : 142
    Par défaut
    Si je me base sur ce que j'ai écris lors du precedent post oui il me reste juste a mettre en session la liste des écrans(page) d'un utilisateur à la connection

    Est ce que tu es d'accord sur le fait qu'un nom d'écran (page) ne change pas et du coup pas de soucis pour la comparaison des chaines ? ou bien j'ai mal compris le problème de comparaison de chaines!!

    Merci encore

  11. #11
    Expert confirmé
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Par défaut
    Citation Envoyé par mrkinfo Voir le message
    Est ce que tu es d'accord sur le fait qu'un nom d'écran (page) ne change pas
    Oui, je suis assez d'accord. Par contre, ce qui me chiffonne c'est qu'en faisant ainsi, on ne peut pas bénéficier des fonctionnalités de Visual Studio qui vérifie l'intégrité du code. Que tu mettes "About.aspx" ou "Aboute.aspx" Visual Studio ne verra pas la différence. Il faut que tu mettes en place des tests unitaires pour vérifier cela.
    De plus, mettre du code "en dur" a toujours été un truc qui me hérisse le poil. Ce qui est acceptable est de créer une classe statique de constante dans laquelle tu peux mettre ces noms. Cela permet d'être certain de ne jamais faire d'erreur d’orthographe.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    public static class Constants
    {
    	public static class User
    	{
    		public static readonly string uGuid = "uGuid";
    	}
    }
    PS: n'oublie pas de cliquer sur le bouton résolu en bas à gauche.
    "Winter is coming" (ma nouvelle page d'accueil)

  12. #12
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Juin 2006
    Messages
    142
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2006
    Messages : 142
    Par défaut
    c'est exactement ce que j'ai fait !! des constantes !!

    merci encore!!

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

Discussions similaires

  1. [Conception] Droit d'accès sur un menu dynamique
    Par scorpion.os dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 25/04/2007, 16h17
  2. [Sécurité] Menu dynamique sécurisé
    Par angel75 dans le forum Langage
    Réponses: 3
    Dernier message: 14/08/2006, 15h58
  3. Créer un sous-menu dynamiquement
    Par PurL dans le forum C++Builder
    Réponses: 4
    Dernier message: 09/09/2004, 10h31
  4. [JSP]menu dynamique en jsp
    Par laouedjahmed dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 22/03/2004, 10h50
  5. Menu dynamique sous Flash MX
    Par dens63 dans le forum Flash
    Réponses: 7
    Dernier message: 29/10/2003, 15h46

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