对于Spring Security 3.1,我有以下映射:
<security:http create-session="ifRequired" auto-config="false" disable-url-rewriting="true" entry-point-ref="authenticationProcessingFilterEntryPoint">
<security:intercept-url pattern="/publicAccess" access="IS_AUTHENTICATED_ANONYMOUSLY" />
<security:logout logout-url="/logout" invalidate-session="true" delete-cookies="true" logout-success-url="/thanks" />
<security:session-management invalid-session-url="/login" session-authentication-error-url="/accessdenied">
<security:concurrency-control max-sessions="1" expired-url="/login?session=expired" />
</security:session-management>
</security:http>
情况是,当我不进行某项活动一段时间或重新启动服务器时,我会被引导至/login
映射。这是正确的,因为invalid-session-url="/login"
。但它也会将我重定向到/login
以获取公共网址,例如/publicAccess
。
即使没有会话或无效会话,我也希望公开网址直接打开。我怎么能这样做?
答案 0 :(得分:0)
即使在访问公共URL时,请求被重定向到登录页面的原因是您需要对用户进行匿名身份验证。同时,您没有为应用程序设置匿名身份验证机制。为了进行设置,您有两种选择:
auto-config="true"
自动加入。<http>
下的<anonymous>
来有选择地启用它。正如您在链接的文档中看到的那样,<anonymous>
将添加
堆栈的
AnonymousAuthenticationFilter
和AnonymousAuthenticationProvider
。如果您使用IS_AUTHENTICATED_ANONYMOUSLY
属性,则必填。
答案 1 :(得分:0)
我使用session-fixation-protection="none"
修复了它。
<security:session-management invalid-session-url="/login" session-fixation-protection="none" session-authentication-error-url="/accessdenied">
<security:concurrency-control max-sessions="1" expired-url="/login?session=expired" />
</security:session-management>
:)