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

 .NET Discussion :

gestion de droits granulaire


Sujet :

.NET

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    306
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2008
    Messages : 306
    Points : 76
    Points
    76
    Par défaut gestion de droits granulaire
    Bonjour,

    J'ai besoin de conseils pour un site web avec une administration.
    J'aimerai vos conseils pour pouvoir gérer les droits par groupe et ou utilisateur pour le site en allant jusqu'à limiter le droit à voir certaines informations sur certaines pages.
    Exemple ne pas voir certains commentaires ou alors ne pas pouvoir ajouter, modifier ou supprimer des composants.

    Pour info je dispose d'une base de données MS sql

    Merci de vos pistes pour avoir quelque chose de simple à mettre en place et maintenir mais aussi pouvoir descendre assez bas dans la gestion des droits.

  2. #2
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Points : 9 743
    Points
    9 743
    Billets dans le blog
    3
    Par défaut
    Pour faire quelque chose d'assez simple, tu peux jouer sur des jointures.

    Par exemple tu as une table Utilisateur (qui contient la liste de tes utilisateurs), une table TypeCommentaire (qui contient les types de commentaires), et une table Commentaire (qui contient les commentaires). Tu rajoutes une table Utilisateur_Asso_TypeCommentaire qui contiendra en gros les habilitations, c'est-à-dire les types de commentaires qu'il peut voir.

    Lorsque tu récupères les commentaires, il te suffira de faire une jointure interne (INNER) avec la table Utilisateur_Asso_TypeCommentaire afin de ne récupérer que les commentaires que l'utilisateur est habilité à voir.
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    306
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2008
    Messages : 306
    Points : 76
    Points
    76
    Par défaut
    Merci de ta proposition mais les commentaires ne sont qu'un simple exemple et ça me parait bien trop lourd à gérer s'il faut faire ça sur plusieurs champs?

  4. #4
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Points : 9 743
    Points
    9 743
    Billets dans le blog
    3
    Par défaut
    Ben de toute façon il n'y a pas de solution miracle

    Tu vas devoir trouver un compromis, mais ce qui est sûr, c'est que quelle que soit la solution, tu vas avoir du boulot.

    La solution des jointures permet des scénarios avancés, tout en restant souple.

    Une autre solution consiste à se baser sur le principe des "Claims". Un "Claims" c'est une affirmation : "je peux accéder aux commentaires". Il est possible de créer une liste de Claims, et pour des scénarios plus évolués, de créer des niveaux infinis de sous-listes de Claims...

    Cette fois-ci, au lieu de gérer les permissions dans la base de données, on les gère dans l'application. Donc tu vas devoir :
    - Modifier la façon dont les utilisateurs s'authentifient (il faudra récupérer les Claims, puis les conserver pendant la durée de la session).
    - Modifier le code de ton application pour effectuer les vérifications nécessaires quand il le faut (est-ce que l'utilisateur peut accéder à ça ou pas ?)

    Il est aussi possible de les gérer à la fois dans la DB et à la fois dans le code.

    Enfin, il y a une autre façon de procéder, qui consiste à utiliser une énumération flag. En combinant les valeurs, tu peux déterminer le niveau de permissions.

    Il y a pas mal de solutions, tout dépend des besoins. Vu ce que tu as exposé comme besoin, je te conseille en tout cas de bien étudier ton besoin avant de te lancer dans le code Ce serait dommage de t’apercevoir que tu dois tout refaire une fois arrivé au bout.
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  5. #5
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2003
    Messages
    274
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Luxembourg

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

    Informations forums :
    Inscription : Décembre 2003
    Messages : 274
    Points : 372
    Points
    372
    Par défaut
    Bonjour,

    J'ai du bosser sur une application qui faisait ce genre de restrictions et j'utilisais la base de données pour faire toutes les vérifications et donc je n'avais absolument rien dans le code.

    Le but est de créer le token de l'utilisateur. Par token tu peux créer ce que tu veux ou passer simplement ses credentials. Avec ce token tu le passes en paramètre de chaque appel à une procédure stockée. Et dans chaque procédure appelée tu vérifies ce que l'utilisateur a le droit de voir comme record.

    Le procédé est lent à mettre en place au départ car il te faut des tables qui permettent de dire à quelle information l'utilisateur/le groupe a le droit et ensuite ce ne sont que de simples jointures à cette table.

    Comme cité plus haut, il n'y a pas de solutions miracle ni qui ne se construise en une seconde.
    Vous avez la réponse à votre question ? Mettez votre sujet en

    Une personne vous a correctement aidé ? Cliquez sur le

Discussions similaires

  1. gestion des droits d'accès : pg_hda.conf et autres
    Par Pigoulou dans le forum PostgreSQL
    Réponses: 5
    Dernier message: 12/02/2005, 07h57
  2. Idées pour une gestion de droits d'accès a des Forms ?
    Par sfxElrick dans le forum Composants VCL
    Réponses: 17
    Dernier message: 26/01/2005, 16h00
  3. Gestion des droits
    Par totop dans le forum Décisions SGBD
    Réponses: 2
    Dernier message: 22/01/2005, 09h49
  4. Gestion des droits d'accès
    Par soulryo dans le forum Décisions SGBD
    Réponses: 2
    Dernier message: 12/01/2005, 10h50
  5. Gestion De Droits Grant Revoke
    Par donde dans le forum Informix
    Réponses: 5
    Dernier message: 15/01/2003, 11h59

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