2010-05-03 16 views
2

Je suis un peu vague sur la façon de commencer à utiliser le plugin shiro, après avoir lu quelques documents. J'ai décidé contre Nimble, car il est livré avec quelques tables et plugins UI.Grails Shiro plugin: confirmant ma compréhension

Je configure shiro plugin avec le domaine générique, avec mes propres tables. Je peux utiliser un contrôle d'accès fondé sur les permissions (plutôt basé sur le rôle), car il évolue bien. Maintenant, les étapes pour cela.

  1. assignent la chaîne d'autorisation au sujet, et enregistrez-le dans le contrôle db
  2. la permission par isPermitted, hasPermission (ou balises pertinentes dans le SGP).

Maintenant,
1. quand utiliser le contrôle d'accès via le filtre?
2. Y a-t-il une fermeture injectée dans le contrôleur où je peux définir l'autorisation pour les actions qu'il contient? J'ai lu quelque part sur la fermeture statique accessControl sur chaque contrôleur, mais ne semble pas être documenté.
3. Comment puis-je créer un scénario de contrôle d'accès typique comme seul le créateur de (quelque chose, un message, etc.) peut le supprimer? Une possibilité est de créer et de persister une chaîne d'autorisation basée sur userid. pour vérifier l'autorisation récupérer l'objet (poste), obtenir l'ID utilisateur et comparer avec le sujet .. semble un peu compliqué .. toute mise en œuvre facile?

merci beaucoup .. Babu.

+0

J'ai regardé à nouveau Nimble, et il semble que ce ne soit pas mal de toutes les caractéristiques ... il semble que ce soient des caractéristiques de base et sociales divergentes ... il faut explorer davantage ... un défi serait d'intégrer le style dans mon application... – bsr

Répondre

1

1 quand utiliser le filtre de sécurité du contrôle d'accès? A. Utilisez accessControl {true} lorsque vous souhaitez limiter l'accès aux actions du contrôleur aux utilisateurs authentifiés. B. Utilisez accessControl() lorsque vous souhaitez limiter l'accès aux actions du contrôleur, quel que soit le contenu du paramètre, en fonction des autorisations "$ {controllerName}: $ {actionName}". C. Si vous souhaitez limiter les actions en fonction du contenu du paramètre, par ex. seulement supprimer un objet de domaine pour lequel vous avez l'autorisation de suppression "$ {name}: $ {id}: delete", vous devez vérifier isPermitted explicitement dans le contrôleur. Comment créer un scénario de contrôle d'accès typique comme seul le créateur ?

J'ajouterais les permissions nécessaires à l'utilisateur lorsque le message est créé, par ex. "post: $ {postId}: *" De cette façon, les permissions appartiennent à des utilisateurs et/ou des rôles, et non à des objets de domaine arbitraires, comme prévu dans la façon de travailler de Shiro. Par opposition aux autorisations du système de fichiers, qui appartiennent aux fichiers et aux répertoires au lieu des utilisateurs.