gpt4 book ai didi

java - 了解 RoleVoter 概念?

转载 作者:行者123 更新时间:2023-12-01 12:04:18 24 4
gpt4 key购买 nike

我可以在其中一个项目中看到以下配置

<bean id="myFilterSecurityInterceptor"
class="org.springframework.security.web.access.intercept.FilterSecurityInterceptor">
<property name="authenticationManager" ref="authenticationManager" />
<property name="accessDecisionManager" ref="accessDecisionManager" />
<property name="securityMetadataSource">
<security:filter-security-metadata-source>
<security:intercept-url pattern="/user/**" access="PERMISSION_VIEW_USER" />
.....
</security:filter-security-metadata-source>
</property>
</bean>


<bean id="accessDecisionManager"
class="org.springframework.security.access.vote.AffirmativeBased" >
<property name="decisionVoters">
<list>
<bean class="org.springframework.security.access.vote.RoleVoter" />
<bean class="org.springframework.security.access.vote.RoleVoter">
<property name="rolePrefix" value="PERMISSION_"/>
</bean>
</list>
</property>

问题 1:-

我无法理解两个具有类“RoleVoter”的bean元素在这里扮演什么角色?我的意思是单角色选民还不够吗?

问题 2:-

也在一个 bean 下
属性 name="rolePrefix"value="PERMISSION_" 有什么帮助?

我对第二个问题的理解是,当用户尝试访问 URL/user/时,RoleVoter 会将授予的权限与值进行匹配针对访问属性(在本例中为 PERMISSION_VIEW_USER)给出,并且它应该以“PERMISSION_”开头(作为 rolePrefix 的值给出)。是吗?

我通过[此链接][1]确认了我对问题 2 的理解。别担心这个。

最佳答案

如果您对第二个问题有了解决方案,那么这就真正回答了第一个问题。 default prefix RoleVoter 使用的是 ROLE_,因此它将忽略任何不匹配的属性。

使用自定义前缀添加第二个投票者意味着将考虑同时匹配 ROLE_PERMISSION_ 的属性。不过,该行为与前缀无关,因此除非有其他原因在您的应用程序中使用不同的前缀,否则如果您只选择一个并坚持使用它会更简单。

或者,您可以使用更新的表达式语法进行访问控制,这可能更容易理解,并且根本不需要任何特殊的命名约定。

关于java - 了解 RoleVoter 概念?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27742730/

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