Bonjour à tous
Une fois n'est pas coutume, c'est moi qui poste pour obtenir de l'aide, enfin surtout des conseils.
Voici mon objectif : implémenter une gestion de privilèges assez fine dans un site ASP.NET.
Attention, il n'est pas simplement question de configuration d'un Membership/Role provider et du web.config pour gérer l'accès à des pages web. Cela va plus loin.
En effet, je part du principe qu'au minimum un utilisateur peut avoir 4 privilèges :
- Lire/Visualiser
- Créer
- Editer/Modifier
- Supprimer
Mais à ces privilèges basiques viennent s'ajouter d'autres privilèges plus pointus. Par exemple un utilisateur pourrait avoir le droit de Modifier sans pour autant pouvoir tout modifier non plus.
Prenons un exemple : une fiche client. Parmi les actions possibles on a bien Visualiser, Créer, Modifier, Supprimer. On a aussi : Résiliser, Bloquer/Débloquer, Relancer, etc... Ces trois dernières actions prennent la forme de boutons sur la fiche. On peut donc tout à fait avoir une situation où un utilisateur peut Visualiser une fiche et Bloquer/Débloquer le client.
La problématique d'implémentation est : comment le faire efficacement ?
Actuellement je m'oriente vers une gestion relativement naïve, du genre : dans le Page_Load je récupère les privilèges de l'utilisateur et, en fonction de ceux-ci, je rend Disponible/Visible les boutons. J'ai donc du code du genre :
Ainsi pour l'utilisateur connecté et l'identifiant d'action (en l'occurence "Member.Lock") le système va retourner un booléen.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 btLock.Enabled = RightProvider.IsEnabled("Member.Lock") ou btLock.Visible = RightProvider.IsVisible("Member.Lock")
Ce système fonctionne très bien mais j'ai l'impression que cela alourdit énormément le code. D'où mes questions :
- est-ce là une bonne technique d'implémentation ?
- y a-t-il une technique plus adéquate ?
- existe-t-il quelque chose de déjà tout fait en ASP.NET ?
J'ai cherché sur ce forum des conseils répondant à ma problématique sans succès pertinent.
Merci pour vos conseils
Cordialement
Partager