Spring-security – AccessDecisionVoter-impl不会被调用

我正在尝试创建自定义AccessDecisionVoter,并在调用它时调试它。

我在每种方法中都提出了一个断点,但没有发生任何事情。

弹簧security.xml文件:

        

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 attributes) { System.out.println("here"); return 0; } } 

顺便说一下,在app加载/运行期间没有抛出exception谢谢

您需要使用自定义AccessDecisionManager,否则使用默认值。 你可以这样做

  

请查看文档以获取更多相关信息。

还有一件事:你的选民中的supports()方法应该返回true否则不会调用vote()