Spring安全方法SecurityInterceptor
我在tomcat6上运行了一个Java应用程序。 我正在使用Spring3.0.4和SpringSecurity 3.0.5 为了保护对dao方法的访问,我想使用spring securitySpring安全方法SecurityInterceptor,security,methods,spring-security,Security,Methods,Spring Security,我在tomcat6上运行了一个Java应用程序。 我正在使用Spring3.0.4和SpringSecurity 3.0.5 为了保护对dao方法的访问,我想使用spring securityMethodSecurityInterceptor。但这一个实际上根本没有“拦截”访问 其配置如下: <bean id="securityInterceptor" class="org.springframework.security.access.intercept.aopalliance.Meth
MethodSecurityInterceptor
。但这一个实际上根本没有“拦截”访问
其配置如下:
<bean id="securityInterceptor" class="org.springframework.security.access.intercept.aopalliance.MethodSecurityInterceptor">
<property name="authenticationManager">
<ref bean="authenticationManager"/>
</property>
<property name="accessDecisionManager">
<ref bean="accessDecisionManager"/>
</property>
<property name="securityMetadataSource">
<value>
com.xkst.dao.InvoiceDao.*=ROLE_ADMIN
com.xkst.dao.UserDao.*=ROLE_ADMIN
</value>
</property>
</bean>
在这里,我可以在我的客户机上调用“serverService”的任何方法,这些方法应该受到“MethodSecurityInterceptor”的保护,而无需进行身份验证。我可以从我的“UserDao”查询所有数据
我真的不知道缺失的环节是什么
authenticationManager
和accessDecisionManager
也已配置。服务器启动时没有错误消息。它甚至记录了“安全方法”的创建,如:
那么我做错了什么?你解决过这个问题吗?我不太确定了,但我想问题是在同一个接口实现中调用方法。拦截器仅适用于来自外部的方法调用;另一节课。据我所知,Spring在原始对象周围创建了一个代理对象,并在那里处理截取。嗯(有一点)。你刚刚救了我一天!我已经调试spring一天了,想弄明白为什么我的方法在调用这些方法时没有经过身份验证,而没有意识到只有当spring方法调用程序能够干预时,注释才会起作用,也就是说,当通过spring从外部解决这些问题时……你解决过这个问题吗?我不太确定了——但我想问题是在同一个接口实现中调用方法。拦截器仅适用于来自外部的方法调用;另一节课。据我所知,Spring在原始对象周围创建了一个代理对象,并在那里处理截取。嗯(有一点)。你刚刚救了我一天!我已经调试spring一天了,想弄明白为什么我的方法在调用这些方法时没有经过身份验证,而没有意识到只有当spring方法调用程序能够介入时,注释才会起作用,即当通过spring从外部寻址这些方法时。。。
public class SecurityTest {
public static void main(String[] args) {
ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext("clientContext.xml");
EntityServiceInterface serverService = (EntityServiceInterface) ctx.getBean("entityServiceInterface");
List<UserEntity> users = serverService.performGetAllUsers();
for(UserEntity user : users) {
System.out.println(user.getUserName());
}
}
2011-08-01 10:38:48,675 INFO MethodDefinitionMap:75 - Adding secure method [public java.util.List com.xkst.dao.UserDao.findAll()] with attributes [[ROLE_ADMIN]]