gpt4 book ai didi

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

转载 作者:搜寻专家 更新时间:2023-11-01 02:16:35 25 4
gpt4 key购买 nike


我正在尝试创建自定义 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"/>

看看the documentation有关这方面的更多信息。

还有一件事:投票器中的 supports() 方法可能应该返回 true 否则 vote() 将不会被调用。

关于java - Spring-security - AccessDecisionVoter-impl 不会被调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5288744/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com