У меня есть приложение Spring Boot UI.Я пытаюсь перенаправить пользователей на первоначально запрошенный URL-адрес после входа в систему.
Когда пользователь запрашивает http://www.example.com/myapp/user/22,, приложение удачно перенаправляет на http://www.example.com/myapp/login. После входа пользователя приложение перенаправляетна http://www.example.com/myapp/dashboard. Я бы хотел, чтобы приложение перенаправляло на http://www.example.com/myapp/user/22.
Я просмотрел несколько ссылок и чувствую, что у меня правильная конфигурация, но перенаправление работает не так, как ожидалось.
Моя настройка безопасности
public class SecurityConfig extends WebSecurityConfigurerAdapter {
.....
....
@Autowired
private MyAuthenticationSuccessHandler authenticationSuccessHandler;
@Override
protected void configure(HttpSecurity http) throws Exception {
http.
authorizeRequests()
.antMatchers("/user/**").authenticated()
.and().csrf().disable().formLogin()
.successHandler(authenticationSuccessHandler)
......
, а мой обработчик успеха -
@Component
public class MyAuthenticationSuccessHandler extends SimpleUrlAuthenticationSuccessHandler {
...
public MyAuthenticationSuccessHandler() {
super();
this.setDefaultTargetUrl("/myapp/dashboard");
this.setUseReferer(true);
}
@Override
public void onAuthenticationSuccess(HttpServletRequest request, HttpServletResponse response,
Authentication authentication) throws IOException, ServletException {
//Do something ..........
........
.........
super.onAuthenticationSuccess(request, response, authentication);
}
Я тоже пытался использовать SavedRequestAwareAuthenticationSuccessHandler.
Я заметил, что мой обработчик успеха вызывается, но целевым URL-адресом всегда является / user / login, и вызывается мой контроллер входа в систему ..
@RequestMapping("/login")
public ModelAndView login(@ModelAttribute() {
if(!userIdentified) {
//go to login page
} else {
new ModelAndView("redirect:/myapp/dashboard");
}
}
и пользователь перенаправляется на «панель управления».
Что еще мне не хватает?