2009-02-13 8 views
1

il semble qu'il ya 2 options lorsqu'ils traitent avec des autorisations de sécurité pour les vues en mvc:autorisations utilisateur asp.net mvc et vues

  1. soit gérer la logique de contrôle des autorisations dans le contrôleur et diriger l'utilisateur vers la vue appropriée ...
  2. ou mettre en œuvre une certaine forme d'extensions de sécurité HtmlHelper conscients du fait que rendent (ou non) des champs de formulaire appropriés/données

suis-je manque d'autres options ici? le premier semble ridiculement non-DRY et le second semble contredire la définition d'une vue ...

alors ma question est: y at-il un meilleur moyen?

Répondre

4

Je ne suis pas d'accord avec l'idée que (2) contredit l'idée d'une vue. Rendre ou ne pas rendre un composant particulier d'une vue dépendante des données reçues du contrôleur me semble parfaitement approprié. Si vous choisissez d'exiger que les données soient dans le modèle ou si elles peuvent être utilisées à partir d'autres ressources de serveur dépend, je pense, de la pédantisme que vous voulez être. Je choisis plutôt d'être pragmatique et d'utiliser simplement ce qui est fourni plutôt que de fabriquer un nouveau modèle juste pour contenir des informations liées au rôle. Dans certaines circonstances (lien mon contrôle de menu), je vérifie simplement le rôle dans la logique de vue.

Il est important de se rappeler que MVC est un modèle - pas un dictum. Là où le modèle semble fonctionner contre vous, c'est bon de le plier un peu. De même, DRY est un principe et non une loi. S'il semble préférable de répéter un petit code pour mieux accomplir un but, allez-y et répétez-le. Comprenez que vous créez des problèmes de maintenance pour vous-même, mais ne laissez pas l'adhésion rigide à un principe vous empêcher de faire la «bonne chose».

+1

il me semble que vous utiliseriez l'une ou l'autre des deux méthodes ... ne serait-il pas préférable d'aller avec une convention et de choisir 1? –

+1

Cela voudrait dire avoir une vue séparée pour chaque combinaison potentielle de rôles et cela semble être une violation de DRY en attente de se produire. Je préfère le gérer au cas par cas et recourt généralement à (2) plus (1). Je ne peux penser qu'à un seul cas où j'ai fait (1). – tvanfosson

+0

-clarification: je voulais dire "choisir un" ... pas dans le sens littéral "choisir le numéro 1" –

Questions connexes