2009-11-11 22 views
0

Contexte: L'application de grails que je développe a quelques niveaux de sécurité granulaire. D'abord, le moins granulaire est au niveau du contrôleur. Soit vous pouvez voir une page spécifique ou vous ne pouvez pas (j'utilise le plugin de sécurité Acegi printemps). Le deuxième niveau de sécurité est dans la couche de service via une approche AOP. Vous pouvez accéder à une certaine méthode de service avec les attributs transmis en fonction de la manière dont vous vous rapportez à cet objet. La troisième couche est à nouveau dans la couche de service et de nouveau facilitée via AOP qui fournit des conseils à la méthode de service, qui restreint ou modifie ce qui est retourné.View Level Security Pattern

La question Le dernier niveau auquel se rapporte ma question est le niveau d'affichage. Certains utilisateurs n'obtiennent pas de liens vers certaines pages ou sont en mesure d'afficher des informations supplémentaires. Quelle est la meilleure façon de mettre en œuvre cela? Actuellement j'utilise le taglib de sécurité et utilise ifAnyGranted ou ifAllGranted et tel directement sur mon gsp. Il pourrait être nécessaire à l'avenir d'avoir des privilèges plus complexes. Cette sécurité devrait-elle être ramenée au contrôleur, puis transmise sur le modèle de sorte que vous puissiez faire quelque chose comme <g:if test="${hasSomeViewRight}"></g:if>? Je pense que les deux sens ne sont pas très laconiques. Y a-t-il un meilleur modèle pour cela?

Répondre

0

Oui, il doit être retiré vers le contrôleur. Cela dit, dans asp.net mvc, cela se fait généralement en ayant un modèle de vue, donc votre modèle ne se remplit pas de choses qui se rapportent à la vue spécifique (s).

Ps. Je considère "hasSomeViewRight" comme "canDeleteProducts", canUpdateProducts et similaires.

+0

Merci, j'espérais avoir plus de discussion. –