Я хочу, чтобы моя страница входа перенаправлялась на другую, если в URL указан параметр forward
.В противном случае я хочу, чтобы он перенаправлял туда, куда хотел пойти пользователь.
Итак, скажем, у меня есть маршрут /print
, который защищен.Когда пользователь нажимает какую-то кнопку, я вручную перенаправляю его на этот URL
http://localhost:8080/login?forward=print?p=5d1666a775d2f02064dcdf06
, потому что, если он выберет Sign Up
на экране входа в систему, я могу вспомнить, куда он направлялся изначально.
Поэтому я настроил AuthenticationSuccessHandler
@Bean
open fun authenticationSuccessHandler(): AuthenticationSuccessHandler {
val redirectStrategy = DefaultRedirectStrategy()
return AuthenticationSuccessHandler { request, response, _ -> redirectStrategy.sendRedirect(request, response, request.getParameter("forward")) }
}
Но теперь, если пользователь просто вводит этот URL-адрес без входа в систему,
http://localhost:8080/print?p=5d1666a775d2f02064dcdf06
Spring Security перенаправляет его на страницу входа и послелогин, мой AuthenticationSuccessHandler
перенаправляет его на домашнюю страницу, так как параметр forward
отсутствует.Я могу проверить, существует ли параметр или нет, но не знаю, куда перенаправить, если параметр отсутствует.Другими словами
@Bean
open fun authenticationSuccessHandler(): AuthenticationSuccessHandler {
val redirectStrategy = DefaultRedirectStrategy()
return AuthenticationSuccessHandler{ request, response, _ ->
if(!request.getParameter("forward").isNullOrEmpty()) {
redirectStrategy.sendRedirect(request, response, request.getParameter("forward"))
}else {
//TODO
}
}
}
что я должен написать вместо моего TODO
?
Или, может быть, есть какой-то элегантный способ сохранить исходное состояние того, куда пользователь хотел пойти, когда яперенаправить его со страницы входа на страницу регистрации?