Spring Security 3.0.6を使用していますが、次のことができるようにしたいと思います。
ユーザーがページ上にいてセッションタイムアウトが発生した場合、ユーザーはログインページに移動し、有効なログイン時にタイムアウトが発生したページにリダイレクトされます。
現在、security.xmlファイルに次のものがあります。
<http auto-config="true" use-expressions="true">
<form-login
login-page="/login"
default-target-url="/main"
always-use-default-target="false"
authentication-failure-url="/login.html?error=true"
authentication-success-handler-ref="authenticationSuccessHandler" />
<remember-me/>
<logout logout-success-url="/login" />
</http>
これは私の認証クラスです:
public class AuthenticationSuccessHandler extends SavedRequestAwareAuthenticationSuccessHandler {
public void onAuthenticationSuccess(HttpServletRequest request, HttpServletResponse response, Authentication authentication) throws IOException {
String url = "";
HttpSession session = request.getSession(false);
if (session != null) {
SavedRequest savedRequest = (SavedRequest) session.getAttribute(WebAttributes.SAVED_REQUEST);
if (savedRequest != null) {
url = savedRequest.getRedirectUrl();
}
}
System.out.println("url: "+ url);
if (url == "") {
response.sendRedirect(request.getContextPath()+"/main");
} else {
response.sendRedirect(url);
}
}
}
次のようなJavaScriptを使用して、ユーザーをログインページに戻します。
window.location.href="/login";
私の認証クラスでは、URLは常にnullです。Springが正しいページにリダイレクトされるようにこれを機能させるにはどうすればよいですか?