当使用Spring Security的“requires-channel”指令时,如何更改HTTP状态代码?

时间:2013-10-08 14:00:28

标签: spring spring-mvc spring-security

我想强制执行我的webapp下的某些网址只能通过HTTPS访问,而其他网址只能通过HTTP访问。我使用以下配置使用Spring Security 3.1.1实现了这一点:

<security:intercept-url pattern="/cart" requires-channel="https" />
<security:intercept-url pattern="/login" requires-channel="https" />

使用此配置,当我尝试在HTTP下打开“/ login”时,我会在HTTPS下自动重定向到“/ login”,这完全符合要求。问题是状态代码 - 使用302(临时移动)执行重定向。是否可以将该状态代码更改为301(永久移动)?

1 个答案:

答案 0 :(得分:0)

更详细地描述了同样的问题,并在此处回答:Override the ChannelProcessingFilter with Spring Security 3.0.5 does not work

编辑:另一种方法是保留默认的retryWithHttpEntryPoint和retryWithHttpsEntryPoint bean,并仅提供自定义的RedirectStrategy实现。