Spring - interception de méthodes (POA)
Le
Yliur

Bonjour
Est-ce que quelqu'un connaît bien le conteneur web Spring ?
Je m'intéresse aux capacité de Programmation Orientée Aspect de Spring. Il s'agit d'intercepter l'exécution de certaines méthodes pour exécuter des pré/post-traitements.
Il s'agit ici de valider l'exécution de telle ou telle méthodes pour l'utilisateur courant. En d'autres termes de vérifier avant d'autoriser l'exécution d'une méthode que
l'utilisateur a le droit de la faire.
Spring possède un composant de sécurité, Acegi Security, qui permet d'établir des filtres de sécurité, mais je n'ai pas réussi à faire fonctionner les interceptions de méthodes.
Pour ceux qui se sont déjà penchés sur la question, j'essaie de faire fonctionner la création automatique d'envoloppeurs (proxy), pour déclarer des choses de la forme
paquetage.Classe.charger*=ROLE_ADMIN (pour dire que les méthode de la forme "charger*" de la classe "Classe" ne sont autorisées que pour l'administrateur).
Est-ce que quelqu'un a un exemple de configuration d'Acegi Security pour l'interception de méthodes ? Ou même un exemple utilisant directement Spring et permettant d'intercepter
des méthodes définies par un modèle de nom comme dans l'exemple ci-dessus ? Notez que j'ai déjà réussi à faire du filtrage sur les URL, donc la gestion de l'authentification est en
place, je n'ai plus besoin que de configurer cette interception de méthodes.
Les classes qui ont l'air impliquées :
- BeanNameAutoproxyCreator
- MethodDefinitionSourceAdvisor
- DefaultAdvisorAutoProxyCreator
Merci
Yliur
Est-ce que quelqu'un connaît bien le conteneur web Spring ?
Je m'intéresse aux capacité de Programmation Orientée Aspect de Spring. Il s'agit d'intercepter l'exécution de certaines méthodes pour exécuter des pré/post-traitements.
Il s'agit ici de valider l'exécution de telle ou telle méthodes pour l'utilisateur courant. En d'autres termes de vérifier avant d'autoriser l'exécution d'une méthode que
l'utilisateur a le droit de la faire.
Spring possède un composant de sécurité, Acegi Security, qui permet d'établir des filtres de sécurité, mais je n'ai pas réussi à faire fonctionner les interceptions de méthodes.
Pour ceux qui se sont déjà penchés sur la question, j'essaie de faire fonctionner la création automatique d'envoloppeurs (proxy), pour déclarer des choses de la forme
paquetage.Classe.charger*=ROLE_ADMIN (pour dire que les méthode de la forme "charger*" de la classe "Classe" ne sont autorisées que pour l'administrateur).
Est-ce que quelqu'un a un exemple de configuration d'Acegi Security pour l'interception de méthodes ? Ou même un exemple utilisant directement Spring et permettant d'intercepter
des méthodes définies par un modèle de nom comme dans l'exemple ci-dessus ? Notez que j'ai déjà réussi à faire du filtrage sur les URL, donc la gestion de l'authentification est en
place, je n'ai plus besoin que de configurer cette interception de méthodes.
Les classes qui ont l'air impliquées :
- BeanNameAutoproxyCreator
- MethodDefinitionSourceAdvisor
- DefaultAdvisorAutoProxyCreator
Merci
Yliur
un truc du style) et que la config devrait être plus simple...
ya des articles sur javalobby
Salut, essaie cela :
<bean id="attributes"
class="org.acegisecurity.annotation.SecurityAnnotationAttributes" />
<bean id="objectDefinitionSource"
class="org.acegisecurity.intercept.method.MethodDefinitionAttributes">
<property name="attributes"><ref local="attributes" /></property>
</bean>
<bean id="securityInterceptor"
class="org.acegisecurity.intercept.method.aopalliance.MethodSecurityInter ceptor">
<property name="validateConfigAttributes">
<value>false</value>
</property>
<property name="authenticationManager">
<ref local="authenticationManager"/>
</property>
<property name="accessDecisionManager">
<ref local="accessDecisionManager"/>
</property>
<property name="objectDefinitionSource">
<ref local="objectDefinitionSource"/>
</property>
</bean>
<bean id="autoproxy"
class="org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProx yCreator"></
bean>
<bean id="methodSecurityAdvisor"
class="org.acegisecurity.intercept.method.aopalliance.MethodDefinitionSou rceAdvisor"
autowire="constructor">
</bean>