Это моя конфигурация безопасности в весенней загрузке:
http.authorizeRequests().antMatchers("/secured/**").hasAuthority("USER").antMatchers("/", "/**").permitAll();
http.formLogin().loginPage("/login").failureUrl("/login-error").and().logout().logoutUrl("/logout").logoutSuccessUrl("/");
http.httpBasic();
Независимо от того, откуда я вхожу, пользователь снова направляется на домашнюю страницу "/" вместо страницы, запрошенной перед входом в систему.
Например, http://localhost:8080/products?type-name=...
не защищен, и любой может его просмотреть.Однако, если пользователь пытается войти с этой страницы, он перенаправляется на домашнюю страницу, а не остается на http://localhost:8080/products?type-name=...
после входа в систему. Как я могу настроить безопасность, чтобы предотвратить это?
Даже при входе из /secured/..
URL, пользователь перенаправляется на домашнюю страницу.
Я заметил, что когда моя пользовательская страница входа возвращается через метод get:
@RequestMapping(path = "/login", method = RequestMethod.GET)
public String loginGetHandler(HttpServletRequest req) {
System.out.println("Referer: " + req.getHeader("referer"));
return "login";
}
referer - это ожидаемый URL, на который нужно перенаправить пользователя.
Но после отправки формы входа реферер изменяется с ожидаемого URL-адреса на "http://localhost:8080/login"
.Поэтому, когда я внедряю обработчик success для перенаправления на URL-адрес referer, пользователь перенаправляется на страницу входа снова, несмотря на успешный вход в систему.
Кроме того, когда я использую конфигурацию весенней загрузки + безопасности по умолчанию, приложение может правильно выполнитьперенаправить пользователя на предыдущий URL перед входом в систему.Есть ли способ сохранить это в пользовательском конфиге?