Hoi, ik probeer mezelf wat te bekwamen in beveiligingen en gebruik daarvoor het Acegi-framework. Ik heb ergens een tutorial gevonden, en ik heb dat 1:1 nagebouwd in een unittest. Het enige verschil is dat de bean die ik wil beveiligen van een andere class is dan die in de tutorial.
Hier mijn de configuratie van Acegi in mijn spring-config:
Hier is het relevante deel van mijn unittest:
Wanneer ik in de debugger het object o inspecteer, dan is dit weliswaar een Proxy-object, maar hij is niet te converteren naar Pand. In de debugger kan ik het Pand-object wel vinden via o.h.advised.targetsource.target, maar dat is natuurlijk niet de bedoeling; als ik het 'beveiligdPand'-bean ophaal moet dat gewoon een Pand-object zijn.
Heeft iemand enig idee wat ik over het hoofd zie?
Hier mijn de configuratie van Acegi in mijn spring-config:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
| <bean id="beveiligdPand" class="bla.blo.bli.Pand"/>
<bean id="autoProxyCreator" class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">
<property name="interceptorNames">
<list><value>securityInterceptor</value></list>
</property>
<property name="beanNames">
<list><value>beveiligdPand</value></list>
</property>
</bean>
<bean id="securityInterceptor" class="net.sf.acegisecurity.intercept.method.aopalliance.MethodSecurityInterceptor">
<property name="authenticationManager" ref="authenticationManager"/>
<property name="accessDecisionManager" ref="accessDecisionManager"/>
<property name="objectDefinitionSource">
<value>
bla.blo.bli.Pand.setBouwjaar=ROLE_MANAGER
bla.blo.bli.Pand.getBouwjaar=ROLE_WORKER,ROLE_MANAGER
</value>
</property>
</bean> |
Hier is het relevante deel van mijn unittest:
code:
1
2
3
4
5
6
7
8
9
10
| public void testPandAccessManager() {
createSecureContext(_ctx,"manager","manager");
try {
Object o = _ctx.getBean("beveiligdPand");
Pand p = (Pand) o;
p.setBouwjaar(12); //moet goed gaan want ik ben manager
} catch (Exception e) {
e.printStackTrace();
}
} |
Wanneer ik in de debugger het object o inspecteer, dan is dit weliswaar een Proxy-object, maar hij is niet te converteren naar Pand. In de debugger kan ik het Pand-object wel vinden via o.h.advised.targetsource.target, maar dat is natuurlijk niet de bedoeling; als ik het 'beveiligdPand'-bean ophaal moet dat gewoon een Pand-object zijn.
Heeft iemand enig idee wat ik over het hoofd zie?
Siditamentis astuentis pactum.