Spring Boot redirect на текущую страницу после успешного входа в систему
у меня есть формы входа в модальные окна. После успешного входа пользователь перенаправляется на /
страница. Я пытаюсь найти способ остаться на странице контакта или другой странице после входа в систему. Как это сделать? Мой код:
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.antMatchers("/css/**","/js/**","/fonts/**","/images/**","/home","/","/kontakt").permitAll()
.antMatchers("/userlist").hasRole("ADMIN")
.anyRequest().authenticated();
http
.formLogin()
.loginPage("/login")
.permitAll()
.and()
.logout()
.logoutRequestMatcher(new AntPathRequestMatcher("/logout"))
.logoutSuccessUrl("/");
}
5 ответов
вы можете использовать custom AuthenticationSuccessHandler
и set useReferer
to true
.
@Bean
public AuthenticationSuccessHandler successHandler() {
SimpleUrlAuthenticationSuccessHandler handler = new SimpleUrlAuthenticationSuccessHandler();
handler.setUseReferer(true);
return handler;
}
и в configure
способ:
http
.formLogin()
.loginPage("/login")
.successHandler(successHandler())
.permitAll()
.and()
просто, чтобы обеспечить альтернативное решение:
formLogin()
.loginPage("/login")
.defaultSuccessUrl("/")
defaultSuccessUrl
ярлык для добавления пользовательского SuccessHandler
.
вы также можете сделать это в своем AuthenticationSuccessHandler
реализация:
@Override
public void onAuthenticationSuccess(HttpServletRequest request,
HttpServletResponse response, Authentication authentication) throws
IOException, ServletException
{
//Do your logic;
response.sendRedirect(request.getHeader("referer");
}
у меня была странная проблема, которая заставила бы при входе в систему перенаправить пользователя на localhost:8080/js/bootstrap.min.js
если кто-то еще испытывает странное перенаправление при входе в систему, которое, похоже, переопределяет .defaultSuccessUrl()
, тогда попробуйте добавить этот код ниже в SecurityConfig
:
@Override
public void configure(WebSecurity security){
security.ignoring().antMatchers("/css/**","/images/**","/js/**");
}
добавлять Resources/static
папки antMatchers()
@Jonas все, что вам нужно сделать, это добавить .requestCache () в конце
конфигурация будет выглядеть следующим образом
.formLogin()
.loginPage("/login")
.permitAll()
.and()
.logout()
.permitAll()
.and()
.requestCache()