2010-07-20 25 views
1

Dans les applications Web d'entreprise réelles destinées aux entreprises, nous devons toujours limiter l'accès aux données par l'unité et le rôle de l'utilisateur.Fusion d'une unité d'organisation et de rôles métier dans une application Web ASP.NET

Considérons que nous avons une entreprise avec beaucoup de magasins dans un pays.
Ainsi, l'entreprise a son siège social qui a accès à toutes les factures et statistiques pour toutes les succursales. Chaque région du pays gère et planifie les stratégies de vente régionales pour ses propres succursales. Ensuite, l'utilisateur de la région peut également voir toutes les factures qui ont été créées par ses succursales. Chaque branche peut créer une facture, un client et afficher uniquement ses données.

Nous pouvons voir que nous avons deux principales définitions de contrôle d'accès:

1- Les rôles (qui a été pensé et implemeneted il y a plusieurs années!): On peut facilement mettre en œuvre à l'aide RoleProvider et le contrôle du contrôle d'accès Niveau d'interface utilisateur (web.config et sitemap.config)

2- Unités et sa relation avec les rôles pour refuser/accorder à l'utilisateur l'accès aux données de mise à jour/visualisation.

J'ai mis en place un principal personnalisé dans ASP.NET pour obtenir l'unité de l'utilisateur et les rôles, mais je pense qu'il devrait y avoir une solution classique ...

Répondre

0

Vérifiez-les:

http://netsqlazman.codeplex.com/discussions/352107

http://lostechies.com/derickbailey/2011/05/24/dont-do-role-based-authorization-checks-do-activity-based-checks/

Voici MON explication.

http://granadacoder.wordpress.com/2010/12/01/rant-hard-coded-security-roles/

............

Le MembershipProvider est basé sur RÔLES, .... et qui est pour le club de soccer de votre enfant ... pas un professionnel Application DotNet.

Il existe une solution de contournement «intermédiaire».

http://www.lhotka.net/weblog/CommentView,guid,9efcafc7-68a2-4f8f-bc64-66174453adfd.aspx

Fondamentalement. Utilisez le MembershipProvider ...... mais traitez le mot/expression "Role" comme "Right". (Dans votre mind..you ne peut pas changer les noms des objets dans le code MS bien sûr)

Rocky NUTSHELL (depuis l'URL ci-dessus)

résultat bool = currentPrincipal.IsInRole (requiredPermission);