.net2 gestionnaire de droits de fichiers avec sql server en c#

Soyez le premier à donner votre avis sur cette source.

Vue 17 423 fois - Téléchargée 1 667 fois

Description

Ce code permet de stocker les droits et l'arborescence des fichiers d'un site dans une base de donnees Sql Server au lieu du fichier Web.sitetmap et web.config. Il y a donc gestion dynamique et non plus statique de ces droits.
D'ailleurs il y a deux ou trois choses a rajouter dans ce dernier fichier pour que ce code marche. Je vous mets mon web.config en exemple
Le fichier File.aspx(.cs) permet d'associer un droit a chaque fichier, et de definir l'arborescence.
Le fichier GoupManagement.aspx permet de gerer les groupes d'utilisateurs
Le fichier Right.aspx permet de gerer les divers droits.
Le fichier UserGroupRight.aspx(.cs) permet d'associer ces droits aux divers groupes d'utilisateurs

Dans app_code j'ai redefini:
SiteMapProvider: PrismMapProvider.cs
Membership: PrismMembership.cs
MembershipUser: PrismMemberShipUser.cs
RoleProvider: PrismRoles.cs
SecurityHttp: SecurityHttp.cs (script trouve sur internet)

La base de donnees sql server doit contenir ces tables:
-right(id smallint(2) primary_key, name varchar(50));
-file(id int(4) primary_key,name varchar(50), path varchar(100), id_right smallint(2) references right.id, id_parentnode int (4) references file.id, title varchar(50) );
-usergroup(id smallint(2) primary_key, name varchar(50) );
-usergroup_right (id_usergroup smallint(2) references usergroup.id, id_right smallint(2) references right.id);

Source / Exemple :


Cf fichier.zip

Conclusion :


Tout commentaire ou question sera le bienvenu.

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

jesusonline
Messages postés
6827
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
17 -
Ca m'a l'air plutot interressant :)

mais pourrais tu essayer de commenter les lignes de ton web.config

et aussi expliquer comment cela fonctionne en gros :) qui appel quoi pourquoi t'as dériver cette classe etc...

Je met pas de note pour l'instant, car j'ai pas testé le truc ;) mais plus tard quand j'aurais le temps.
gldfdp
Messages postés
91
Date d'inscription
lundi 30 juin 2003
Statut
Membre
Dernière intervention
21 février 2008
-
Default.master est la page master elle est appelee par toute page visible.
Elle contient un menu sopus forme d'arbre: TreeView menu, et un sous forme de chemin: SiteMapPath.
Ces deux menus font appel a un sitemapdatasource qui lui fait appel a PrismMapProvider (cette classe derivant SiteMapProvider, pour faire appel non plus au Web.sitemap, mais a la base de donnees).
J'ai derive MemberShipUser en PrismMembershipUser car j'ai ajoute deux nouvelles proprietes (nom,prenom, et que j'ai redefini le username en login).
Enfin, PrismRoles est derive de RoleProvider et permet de stocker les roles dans la bdd. Elle permet aussi de retrouver tous les fichiers associes a un role.
Apres ca les autres fichiers sont la pour l'interface utilisateur
Bon je sais je ne suis pas tres clair, desole ;-)
hbaradi
Messages postés
16
Date d'inscription
samedi 11 décembre 2004
Statut
Membre
Dernière intervention
31 octobre 2008
-
Bonjour,

J'ai une petite question à vous poser, car je developpe un site en ASP.Net 2.0 et je dois gerer les droits avec les rôles + droit spécifique à chaque page auriez vous une idée pour gérer ceci proprement.

Merci
hbaradi
Messages postés
16
Date d'inscription
samedi 11 décembre 2004
Statut
Membre
Dernière intervention
31 octobre 2008
-
pour être plus clair,
chaque page à des droits genre "Lecture, Modification, Création, Suppression ..." + droit à la carte (ex: ModifDatePblication).

j'avais déjà fait ça en php, avec des eval mais c pas trés propre pour le .Net.

j'espere que c plus clair mnt.
gldfdp
Messages postés
91
Date d'inscription
lundi 30 juin 2003
Statut
Membre
Dernière intervention
21 février 2008
-
C'est une action ou la page entière qui est reliée à un droit spécifique?
-> Si c'est la page, regarder le code ci-dessus (SecurityHttp.cs et Roles.cs).
->Si c'est une action, une solution serait de définir un fichier de ressource par page dans lequel chaque control est associé à un/plusieurs droits , redefinir la methode OnLoadComplete . Dans cette redéfinition parcourir tous les controls de la page et si celui ci n'a pas dans le fichier de ressources le droit correspondant à l'utilisateur, le masquer.

voila, voila en esperant avoir été assez clair moi aussi.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.