0

我在尝试在 Spring Security 中注入自定义权限评估器时遇到问题:

我的前端代码如下所示:

<sec:accesscontrollist hasPermission="VIEW_HEADER,VIEW_ANYTHING" domainObject="${userWebsiteLocationContext}" >
    <b>This is a TEST</b>
</sec:accesscontrollist>

我正在我的春季安全配置中尝试以下内容:...

...
<security:global-method-security>
    <security:expression-handler ref="expressionHandler"/>
</security:global-method-security>

<bean id="permissionEvaluator" class="org.atd.storefront.security.impl.DefaultPermissionsEvaluator" >
</bean>

<bean id="defaultExpressionHandler" class="org.springframework.security.web.access.expression.DefaultWebSecurityExpressionHandler" >
    <property name="permissionEvaluator" ref="permissionEvaluator" ></property>
</bean>

我的自定义权限评估器仅返回 false,但始终显示文本。我还尝试了https://jira.springsource.org/browse/SEC-1749的解决方案,并尝试使用自定义定义的决策管理器 bean:access-decision-manager-ref="webAccessDecisionManager" 无济于事。

我没有得到任何例外,我的自定义权限评估器的 hasPermission 只是没有被调用。

4

1 回答 1

0

PermissionEvaluator为标签注册一个实现就足够了,以获取accesscontrollist它并使用它。

我的建议是在doStartTag()方法的org.springframework.security.taglibs.authz.AccessControlListTag方法中设置一个断点并检查PermissionEvaluator它真正使用的是哪个。

于 2012-10-15T14:20:07.990 回答