spring security使用自定义permissionEvaluator在authorize tag中使用accesscontrollist

时间:2012-10-15 13:58:29

标签: spring spring-security

我在尝试在spring security中注入自定义权限评估程序时遇到问题:

我的前端代码如下所示:

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

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

...
<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>

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

我没有任何异常,我的自定义权限评估者的hasPermission没有被调用。

1 个答案:

答案 0 :(得分:0)

PermissionEvaluator标记注册accesscontrollist的实现应该足以将其获取并使用它。

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