【发布时间】:2017-01-17 18:46:37
【问题描述】:
我们得到了一个使用 Spring security 3.0.8 保护的 Web 应用程序。我们将 DWR 用于 ajax,相当多。现在我们要拒绝对所有 DWR 调用的访问,除非明确指定:
这是我做的,但不起作用:
<!-- Deny every url which is dwr call -->
<intercept-url pattern="/js/dwr/**/**DWR**" access="denyAll"/>
<!-- give access to SomeDWRClass for ROLE_A -->
<intercept-url pattern="/js/dwr/**/SomeDWRClass**" access="hasAnyRole('ROLE_A')"/>
<!-- Give access to everybody for CommonDwr.aCommonMethod.dwr -->
<intercept-url pattern="/js/dwr/CommonDwr.aCommonMethod.dwr" access="permitAll"/>
问题是每当调用 CommonDwr.aCommonMethod.dwr 时,它都会显示 access denied。 为什么?是不是因为 denyAll 的优先级高于 permitAll?。
如果是这样,我该如何解决这个问题?我相信有很多人不得不像这样保护他们的应用程序。
我们这样做的主要原因是如果有新人来编写一个新的 DWR 类,默认情况下应该拒绝该权限,以便他们可以为新类显式设置访问角色。
【问题讨论】:
标签: java spring spring-security