Question

Bien, je recherche un peu de conseils en architecture, mon équipe a la possibilité de reformuler certaines décisions avec une nouvelle fonctionnalité que nous développons, et je voulais voir ce que pensait SO :-) Il y a bien sûr certaines choses que nous ne changeons pas, alors la solution devrait être adaptée à ce modèle. Nous avons notamment une application ASP.NET, qui utilise des services Web pour permettre aux utilisateurs d’effectuer des actions sur le système.

Le problème vient du fait que, comme avec beaucoup de systèmes, différents utilisateurs doivent avoir accès à différentes fonctions. Certains rôles ont accès au bouton Y, et d'autres au bouton Y et B, tandis qu'un autre n'a toujours accès qu'à B. La plupart du temps, les développeurs insèrent simplement dans un méli-mélo de déclarations if à traiter. l'état de l'interface utilisateur. Ma crainte est que, si rien n'est fait, cela deviendra un gâchis incontrôlable, car en plus de mettre la logique d'autorisation dans l'interface graphique, elle doit être placée dans les services Web (appelés via ajax) pour garantir que seuls les utilisateurs autorisés appellent certaines méthodes. .

Ma question est donc la suivante: comment un système peut-il être conçu pour réduire le caractère aléatoire des instructions ad hoc si elles vérifient ici et là des rôles spécifiques, qui pourraient être réutilisées à la fois dans le code d'interface graphique / de formulaire Web et dans le service Web? code.

Par souci de clarté, il s'agit d'une application Web ASP.NET, utilisant des formulaires Web et Script # pour la fonctionnalité AJAX. Ne laissez pas le script # vous décourager de répondre, ce n’est pas fondamentalement différent de asp.net ajax: -)

Était-ce utile?

La solution

Si vous quittez l'autorisation traditionnelle au niveau du groupe, du rôle ou de l'opération, une poussée vers "basée sur les revendications" est générée. autorisation, comme ce qui a été livré avec WCF.

Zermatt est le nom de code de la classe Microsoft. bibliothèque qui aidera les développeurs à créer des applications basées sur les revendications sur le serveur et le client. Active Directory deviendra l’un des STS sur lesquels une application pourrait s’autoriser simultanément sur le vôtre, ainsi que sur d’autres serveurs conformes aux normes de l’industrie ...

Autres conseils

Dans Code Complete (p. 411), Steve McConnell donne le conseil suivant (que Bill Gates lit comme une histoire au coucher dans la publicité de Microsoft).

"Utilisé dans des circonstances appropriées, le code de table est plus simple qu'une logique compliquée, plus facile à modifier et plus efficace."

"Vous pouvez utiliser un tableau pour décrire une logique trop dynamique pour être représentée dans le code."

"L'approche par table est plus économique que l'approche précédente [conception orientée objet]"

En utilisant une approche basée sur des tables, vous pouvez facilement ajouter de nouveaux "utilisateurs" (comme dans l’idée de modélisation d’un utilisateur / agent avec ses actions). C’est un bon moyen d’éviter de nombreux "si". Et je l'ai déjà utilisé pour des situations comme la vôtre, et le code est bien rangé.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top