Je ne sais pas si le plugin Shiro prend en charge, mais le fait Acegi plugin, bien que d'une façon "expérimentale" (quoi que de moyens).
Mise à jour
Après avoir lu la question correctement, il semble que vous vous demandez si vous pouvez utiliser des filtres pour obtenir des services. Si tel est le cas, alors Shiro n'est pas pertinent, car ce sont les filtres qui effectuent l'autorisation, pas Shiro. Donc, pour répondre à votre question à savoir si vous pouvez utiliser des filtres pour sécuriser des services, la réponse est non, car vous n'avez accès au contrôleur qu'à partir d'un filtre. Toutefois, vous pouvez utiliser la métaprogrammation Groovy pour effectuer une interception de méthode AOP sur les services.
L'approche de base est:
- Pour chaque service, ajouter une propriété
invokeMethod
au MetaClass
- La valeur de cette propriété devrait être une fermeture. Cette fermeture interceptera (c'est-à-dire sera appelée à la place de) chaque méthode appelée sur le service.
- Cette fermeture devrait
- Effectuer les contrôles de sécurité
- invoquons la méthode originale si l'autorisation est réussie et lancer une exception (ou montrer une erreur) si l'autorisation ne
En plus
Si possible, je recommande fortement d'utiliser un n plugin de sécurité (par ex. Shiro, Acegi) pour effectuer les contrôles d'autorisation plutôt que de rouler les vôtres de la manière décrite ci-dessus.
Merci. J'utilise shiro, pas acegi. Je voudrais profiter du filtrage pour sécuriser les services. Désolé si ce n'était pas clair. – Brandon
Merci pour les conseils fantastiques. – Brandon