0

我有自己的 AuthenticationSuccessHandler和覆盖方法onAuthenticationSuccess,我需要在身份验证之前使用请求中的参数重定向到某些页面(我希望你明白我的意思,对不起我的英语)

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

我如何使用 POST 方法来做到这一点(默认情况下它是 GET 方法)

4

1 回答 1

3

您可以使用HTTP1.1 307 Temporary Redirect状态码不使用任何sendRedirect方法。

但是 AFAIK 这不是一种常见的做法,也不是所有的网络浏览器都支持这一点。

也许服务器端转发将适合您的情况。

更新:

如果你想使用 spring-security API 发送 POST-redirect,你可以实现你自己的RedirectStrategy

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

更新 2:

您可以307自己发回设置响应状态和“位置”标头:

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

接收此响应的用户代理必须使用与上一个请求中使用的相同方法来执行下一个请求。所以如果第一个请求被POST重定向请求也将是POST.

于 2012-12-11T13:32:11.643 回答