2010-01-22 7 views
0

J'essaie de créer une application basée sur la sécurité au niveau du module. L'idée est que nous aurions un login utilisateur, récupérerions des rôles, récupérerions les pages auxquelles ces rôles ont accès puis, dans ces pages, saisiraient les modules auxquels ils ont accès, puis les fonctions dans les modules auxquels ils ont accès (list, create, edit, effacer). De cette façon, dans un écran d'administration, quelqu'un pourrait autoriser ou refuser des modules et des fonctions de module à des groupes.Sécurité basée sur le module

Quelqu'un a-t-il déjà vu des exemples de projets comme celui-ci ou a-t-il des indices sur la façon de l'implémenter? Je voudrais vraiment essayer ceci sur une architecture de n-couche.

Répondre

1

Créez votre site avec un système de base d'adhésion. Groupez vos pages dans des dossiers et disposez de fichiers Web.Config dans chacun d'entre eux pour contrôler l'accès. Ce sont toutes des fonctionnalités prêtes à l'emploi pour la plupart. Le seul code personnalisé que vous auriez à écrire est lors de la création d'un formulaire d'administration.

En ce qui concerne l'amende accès aux céréales, si elles ne peuvent pas accéder aux pages, ils ne peuvent pas accéder à leurs méthodes ...

http://msdn.microsoft.com/en-us/library/yh26yfzy.aspx

MISE À JOUR:

si l'utilisateur. IsInRole ("administrateur") ...

http://www.4guysfromrolla.com/articles/082703-1.2.aspx

Sur e La même page, dans le code-behind, vous pouvez vérifier leurs rôles par programme et afficher/activer les panneaux/modules en conséquence :-)

+0

Merci pour l'info. Je comprends beaucoup mais je me demandais s'il était possible d'avoir une application dont 2 rôles ont accès à une page mais dans cette page les modules differnet sont chargés en fonction du rôle, ainsi que des fonctionnalités différentes dans les modules basés sur roll. Cela a-t-il du sens? Une page aurait différentes fonctions de modules et de modules basées sur le roulement de l'utilisateur ... –

+0

@Jesse: Oui, voir mise à jour. Vous pouvez vérifier les rôles par programme et charger vos modules en fonction de la présence ou non de l'utilisateur dans ce rôle. Vous pouvez trouver une façon plus élégante de faire la même chose en fonction de la conception de votre objet :-) – IrishChieftain

+1

merci pour la réponse et la mise à jour (excusez-moi pour le retard) :) –

0

J'utiliserais une classe de base pour vos pages pour accomplir l'effet que vous décrivez. Dans votre classe de base, vous pouvez ajouter toutes les méthodes disponibles dont vous aurez besoin, mais fournir une méthode d'autorisation dans la classe de base qui permet aux méthodes de s'identifier en fonction des rôles qu'elles sont autorisées à avoir. Tout cela peut être configuré avec web.config si vous le planifiez. Un grand nombre de fois la méthode basée sur "dossier" pour l'adhésion SQL n'est pas assez robuste. Je suppose qu'à titre d'exemple, vous pouvez créer votre propre énumération de sécurité (ou en trouver une dans l'espace de noms System.Security) pour définir les niveaux d'accès puis mapper les niveaux d'accès de vos groupes dans AD (ou ailleurs) aux énumérations. Les méthodes peuvent ensuite utiliser l'énumération de sécurité sur votre objet utilisateur pour déterminer si l'accès de l'utilisateur autorise la fonction.

Questions connexes