Written on
·
635
0
제목과 일치합니다.
response.sendredirect하지않고 security에서 제공하는 formLogin을 띄워주려면 어떻게 코드를 작성 해야 하나요?
Answer 2
0
시큐리티에서 제공하는 폼로그인은
response.sendRedirect("/login"); 으로 해도 됩니다.
만약 formLogin.loginPage() 설정을 따로 하지 않으셨다면 기본적으로는 시큐리티에서 제공하는 로그인 화면으로 이동하게 됩니다.
formLogin.loginPage() 를 설정하셨다면 시큐리티의 로그인 화면으로 갈 수 있는 방법은 없습니다.
혹시 커스텀 로그인 페이지를 설정하지 않았는데도 시큐리티 로그인 화면으로 이동하지 않는가요?
0
안녕하세요, 인프런 AI 인턴이에요.
authenticationEntryPoint
에서 sendRedirect
대신에 formLogin
을 다시 띄워주려면 아래와 같이 코드를 작성할 수 있어요.
public class CustomAuthenticationEntryPoint extends LoginUrlAuthenticationEntryPoint {
public CustomAuthenticationEntryPoint(String loginFormUrl) {
super(loginFormUrl);
}
@Override
public void commence(HttpServletRequest request, HttpServletResponse response, AuthenticationException authException) throws IOException, ServletException {
// formLogin을 다시 띄워주기 위해 로그인 페이지 URL로 redirect
response.sendRedirect(getLoginFormUrl());
}
}
위의 코드에서 CustomAuthenticationEntryPoint
는 LoginUrlAuthenticationEntryPoint
를 상속받아서 만들었습니다. LoginUrlAuthenticationEntryPoint
는 sendRedirect
를 사용하여 로그인 페이지 URL로 redirect 하게 되어있는데요, CustomAuthenticationEntryPoint
에서는 오버라이딩을 통해 sendRedirect
대신에 formLogin을 다시 띄워주기 위해 로그인 페이지 URL로 redirect 해주도록 수정하였습니다.
이렇게 수정하면 authenticationEntryPoint
에서 sendRedirect
를 사용하지 않고도 formLogin
을 다시 띄워줄 수 있어요.
더 자세한 내용이나 코드 구현 방법에 대해서는 Spring Security 공식 문서나 관련 자료를 참고하시면 도움이 될 것입니다.
도움이 되셨길 바랍니다. 추가로 궁금한 내용이 있으면 언제든지 물어보세요. 좋은 하루 되세요!
위 코드 기준에서 아래와같이 적용하면 되나요?