Spring <http>命名空间似乎导致允许所有非基于角色的页面</http>

时间:2011-09-07 17:19:25

标签: java spring spring-mvc spring-security

我正在尝试将spring MVC配置为不对没有身份验证的任何页面进行身份验证(根据所有页面明确要求使用ROLE_ANONYMOUS)。

但是我在调​​试日志中收到了这条消息:

o.s.s.w.a.i.FilterSecurityInterceptor  - Public object - authentication not attempted

命名空间添加FilterSecurityInterceptor。我认为我需要在过滤器上setRejectPublicInvocations来禁用此功能。

但是我没有看到通过http命名空间做任何事情。我是否必须完全放弃使用http命名空间才能完成此任务?

1 个答案:

答案 0 :(得分:-1)

在我的情况下,我基本上是这样做的。

它适用于匿名用户。

    <http auto-config="true" use-expressions="true">
    <intercept-url pattern="/css/**" filters="none" />
    <intercept-url pattern="/js/**" filters="none" />
    <intercept-url pattern="/img/**" filters="none" />
    <intercept-url pattern="/loginform.*" filters="none" />
    <intercept-url pattern="/topic/addtopic**"
        access="hasAnyRole('USER_ROLE','ADMIN_ROLE','OPER_ROLE')" />
    <intercept-url pattern="/user/**"
        access="hasAnyRole('USER_ROLE','ADMIN_ROLE','OPER_ROLE')" />
    <intercept-url pattern="/admin/**" access="hasRole('ADMIN_ROLE')" />
    <intercept-url pattern="/cadastro.*" filters="none" />
    <form-login login-page="/loginform.html"
        authentication-failure-url="/loginform.html?error=invalido" />
</http>