성공적으로 로그인한 후 스프링 부트가 현재 페이지로 리디렉션됨
모드 창에 로그인 양식이 있습니다.로그인이 성공하면 사용자가 다음으로 리디렉션됩니다./
page. 로그인 후 연락처 페이지나 다른 페이지에 머물 수 있는 방법을 찾고 있습니다.이거 어떻게 해요?내 코드는:
@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("/");
}
사용자 정의를 사용할 수 있습니다.AuthenticationSuccessHandler
그리고 세트useReferer
로.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
.
로그인 시 사용자를 다음으로 리디렉션하는 이상한 문제가 있었습니다.localhost:8080/js/bootstrap.min.js
로그인할 때 이상한 리디렉션이 발생하는 경우, 이는 다음을 재정의하는 것으로 보입니다..defaultSuccessUrl()
, 그럼 아래에 이 코드를 추가해보세요.SecurityConfig
:
@Override
public void configure(WebSecurity security){
security.ignoring().antMatchers("/css/**","/images/**","/js/**");
}
모두 추가Resources/static
폴더에 저장antMatchers()
당신은 그것을 당신의 안에서 할 수 있습니다.AuthenticationSuccessHandler
구현:
@Override
public void onAuthenticationSuccess(HttpServletRequest request,
HttpServletResponse response, Authentication authentication) throws
IOException, ServletException
{
//Do your logic;
response.sendRedirect(request.getHeader("referer");
}
구성은 승인된 답변과 같으며, 내가 가진 유일한 행운은 확장과 함께였습니다.SavedRequestAwareAuthenticationSuccessHandler
.
public class MyAuthenticationSuccessHandler extends SavedRequestAwareAuthenticationSuccessHandler {
@Override
public void onAuthenticationSuccess(HttpServletRequest request, HttpServletResponse response,
Authentication authentication) throws IOException, ServletException {
System.out.println("HEP HEP");
super.onAuthenticationSuccess(request, response, authentication);
}
}
프로젝트 트리에 부트스트랩을 추가한 후 리다이렉트가 제대로 되지 않는 문제가 발생했습니다.
메서드 .defaultSuccess플래그가 = true인 URL은 시간과 코드 라인을 절약해 주었습니다.
.formLogin()
.loginPage("/login")
.defaultSuccessUrl("/", true)
.permitAll()
봄길, 알라 연장.SavedRequestAwareAuthenticationSuccessHandler
아니면SimpleUrlAuthenticationSuccessHandler
구현하기에는 다소 투박할 수 있습니다.컨트롤러(예: 로그인을 처리하는 컨트롤러)에서는 헤더 요청을 직접 수행할 수 있습니다.
HttpServletRequest request =null;
String priorUrl = request.getHeader("Referer");
수동(사용자에 의해 시작된) 로그아웃 또는 세션 제한 시간(스프링 세션에서 처리됨) 이전에 URL이 있음을 알게 됩니다.https://iAmPriorUrl.com/...
. 그러면 당신은 그것을 가지고 당신이 하고 싶은 대로 할 수 있습니다.
@Jonas 마지막에 .requestCache()만 추가하면 됩니다.
당신의 구성은 이렇게 보일 것입니다.
.formLogin()
.loginPage("/login")
.permitAll()
.and()
.logout()
.permitAll()
.and()
.requestCache()
언급URL : https://stackoverflow.com/questions/26833452/spring-boot-redirect-to-current-page-after-successful-login
'source' 카테고리의 다른 글
PL/SQL 다중 왼쪽 조인 사용 (0) | 2023.09.09 |
---|---|
요소의 올바른 오프셋을 구하는 방법은? - jQuery (0) | 2023.09.09 |
시간대별 또는 10분 단위로 시간을 분류하려면 어떻게 해야 합니까? (0) | 2023.09.09 |
팬더 데이터 프레임을 인덱스별로 정렬하는 방법은? (0) | 2023.09.09 |
사용자가 브라우저 기록으로 돌아갈 수 있는지 여부를 확인하는 방법 (0) | 2023.09.09 |