如何将重定向作为发布请求发送。春季安全

时间:2012-12-11 13:02:42

标签: grails spring-security

我拥有自己的 AuthenticationSuccessHandler 并覆盖方法 onAuthenticationSuccess ,其中我需要在进行身份验证之前重定向到包含请求参数的某个页面(i希望你理解我的意思,对不起我的英语)

  

getRedirectStrategy()。sendRedirect(request,response,targetUrl);

如何使用POST方法执行此操作(默认情况下为GET方法)

1 个答案:

答案 0 :(得分:3)

您可以使用HTTP1.1 307 Temporary Redirect状态代码在没有sendRedirect方法的情况下执行此操作。

但AFAIK这不是一种常见做法,并非所有网络浏览器都支持此功能。

也许服务器端forward适合您的情况。

更新

如果您想使用spring-security API发送POST重定向,您可以实现自己的RedirectStrategy

DefaultRedirectStrategy使用response.sendRedirect将导致servlet容器发送302响应代码(我不确定每个容器,至少tomcat发送302)。

更新2:

您可以自行发送307返回设置回复状态和“位置”标题:

resp.setStatus(SC_TEMPORARY_REDIRECT);
resp.setHeader("Location", absoluteRedirectUrl);

接收此响应的用户代理必须使用先前请求中使用的相同方法执行下一个请求。因此,如果首次请求为POST,则重定向请求也将为POST