我正在尝试创建自定义 AccessDecisionVoter,并在调用它时将其停止在调试中。
我在每个方法中都设置了断点,但没有任何反应。
spring-security.xml:
<bean id="accessDecisionManager" class="org.springframework.security.access.vote.UnanimousBased">
<property name="decisionVoters">
<list>
<bean class="com.affiliates.server.security.voters.VoterTest">
<property name="brandsApi" ref="brandsApi"/>
</bean>
</list>
</property>
IBrandsApi.java
public interface IBrandsApi {
IHibernateBean getByPK(Integer id);
@Secured({ "ROLE_BRAND_ADMIN" })
IHibernateBean update(IHibernateBean brand);
@Secured({ "ROLE_BRAND_ADMIN" })
IHibernateBean insert(IHibernateBean brand);
@Secured({ "ROLE_BRAND_ADMIN" })
ResultContainer getAll(IFilter filter);
@Secured({ "ROLE_ADMIN" })
Integer delete(IFilter filter);
}
VoterTest.java(带有断点的空文件)
public class VoterTest implements AccessDecisionVoter {
private IBrandsApi brandsApi;
public IBrandsApi getBrandsApi() {
return brandsApi;
}
public void setBrandsApi(IBrandsApi brandsApi) {
this.brandsApi = brandsApi;
}
@Override
public boolean supports(ConfigAttribute attribute) {
System.out.println("here");
return false;
}
@Override
public boolean supports(Class<?> clazz) {
System.out.println("here");
return false;
}
@Override
public int vote(Authentication authentication, Object object,
Collection<ConfigAttribute> attributes) {
System.out.println("here");
return 0;
}
}
顺便说一句,应用程序加载/运行期间没有抛出异常
谢谢
您需要使用自定义的 AccessDecisionManager,否则将使用默认的。你可以这样做
<global-method-security access-decision-manager-ref="accessDecisionManager"/>
看一眼文档 http://static.springsource.org/spring-security/site/docs/3.0.x/reference/ns-config.html#ns-access-manager欲了解更多信息。
还有一件事:supports()
你的选民中的方法可能应该返回true
否则vote()
不会被调用。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)