我正在使用spring security 3.1.4。由于某种原因,没有正确过滤资源访问。我的安全xml文件如下所示。
<http auto-config="true">
<intercept-url pattern="/**" access="ROLE_USER"/>
<intercept-url pattern="/admin/**" access="ROLE_ADMIN"/>
...
</http>
正如您所看到的,我想用此配置表达的是USER可以访问任何资源,除非他们正在访问映射到/ admin / something的资源。
当我以仅使用ROLE_USER的用户身份登录时(在数据库中验证,因为我使用的是jdbc-user-service),我仍然可以将浏览器指向
/ myapp / admin / default
并查看所有内容。
然后我将我的安全xml更改为如下所示。
<http auto-config="true">
<intercept-url pattern="/**" access="ROLE_ADMIN"/>
<intercept-url pattern="/admin/**" access="ROLE_ADMIN"/>
...
</http>
当我以具有ROLE_USER的用户身份登录时,我得到HTTP 403访问被拒绝。
我的问题是
感谢任何帮助。
答案 0 :(得分:3)
尝试将管理模式放在更通用的/ **模式之前。从文档(http://docs.spring.io/spring-security/site/docs/3.0.x/reference/core-web-filters.html)中,最具体的模式需要在模式列表中声明更高。
<http auto-config="true">
<intercept-url pattern="/admin/**" access="ROLE_ADMIN"/>
<intercept-url pattern="/**" access="ROLE_USER"/>
...
</http>