2011-06-08 7 views
0

J'ai une application avec plusieurs utilisateurs avec des rôles différents. Chaque utilisateur ayant accès à une ressource est limité par le rôle qu'il a.Meilleure façon de concevoir l'application

Maintenant, si je construis une application pour gérer ces ressources comment dois-je structurer ma demande.

rôles: admin, modérateur, auteur ressources: articles

Je vois deux options.

1: Créer des modules séparés pour chaque rôle avec donnent accès aux ressources pour le rôle par exemple: admin/ -add/modifier/supprimer l'article -add/modifier/supprimer un utilisateur auteur/ -add/modifier/supprimer ses propres articles moderator/ -modifier les articles

2: Créer des modules séparés pour chaque ressource et leur donner accès en fonction du rôle de l'utilisateur qui y accède. par exemple:
articles/ajouter/modifier/supprimer [gérer les opérations en fonction du rôle de l'utilisateur]

Le langage PHP est et je vais utiliser le Zend Framework. Mon problème ne concerne pas les permissions d'accès puisque le composant ACL de Zend s'en charge. Mon problème est avec l'organisation de l'application.

Par exemple, si un nouvel utilisateur est introduit, dans le premier cas, je vais devoir créer un nouveau module. Mais dans le cas de la seconde méthode, je devrai mettre à jour chaque module.

Il est évident que la première approche impliquera plus de fichiers et moins de logique complexe la deuxième approche nécessitera une logique plus complexe mais je ne suis tout simplement pas sûr de savoir laquelle suivre et à la recherche de conseils. Toute aide est appréciée.

Merci.

Répondre

0

Je pense que l'approche générale serait de garder la logique d'accès avec la ressource accédée, pas avec l'accès à un.

Dans votre exemple, cela voudrait dire que si l'article veut être modifié que par certains utilisateurs, il est l'affaire de l'article pour vérifier qui l'édite.

toute la logique serait quelque chose comme:

if user is article.owner or admin 
    ...make things happen 

et si jamais vous voulez ajouter nouveau rôle d'utilisateur ou de modifier le comportement de ceux qui existent déjà, il vous suffit de modifier ce une condition plutôt que de créer un autre joli -much-le-même-encore-un-bit-différent-module d'utilisateur.

+0

Vous avez absolument raison. Merci beaucoup. – Rajesh

0

Cela dépend vraiment de quelle langue/plate-forme vous construisez tout. La plupart des plates-formes ont déjà construit à l'appui de la sécurité.

Cette réponse est pour .NET.

Ne faites rien de spécial. Utilisez le modèle de sécurité intégré (CAS = Code Access Security).

Vous pouvez limiter l'accès aux méthodes en utilisant certains attributs. Si vous créez une application MVC, vous pouvez utiliser l'attribut [Authorize], tandis que dans les applications normales, vous pouvez utiliser [PrinicpalPermission].

Pour l'obtenir, vous devez travailler pour attribuer un principal à tous les threads en cours d'exécution (System.Threading.Thread.CurrentPrincipal = new MyPrincipal(myUserInfo)).

ASP.NET fait automatiquement, et d'autres applications utilisent l'utilisateur connecté actuel (Windows) utilisateur par défaut.

Questions connexes