SecurityCong
http
.authorizeRequests()
.anyRequest().authenticated();//모든 곳에 인증해야함
http
.formLogin()
.loginPage("/loginPage") //로그인커스텀 페이지 기본은 security가 제공하는 /login으로 이동한다.
.defaultSuccessUrl("/") //성공했을때의 이동 페이지
.failureUrl("/login") //실패시 돌아갈 URL
.usernameParameter("userId")
.passwordParameter("passwd")
.loginProcessingUrl("/login_proc") //로그인읋 할때 전송되는 URL
.successHandler(new AuthenticationSuccessHandler() { //익명 클래스 성공했을때의 호출하는 핸들러
@Override
public void onAuthenticationSuccess(HttpServletRequest request, HttpServletResponse response, Authentication authentication) throws IOException, ServletException {
//Authentication인증 정보가 담긴 객체
System.out.println("Authentication: " + authentication.getName());
response.sendRedirect("/");
}
})
.failureHandler(new AuthenticationFailureHandler() {
@Override
public void onAuthenticationFailure(HttpServletRequest request, HttpServletResponse response, AuthenticationException exception) throws IOException, ServletException {
System.out.println("exception: " + exception.getMessage());
response.sendRedirect("loginPage");
}
})
.permitAll()//위에는 모든사람이 접근 허용
;
configure 메서드에 위와 같이 설정해줍니다. 각 메서드의 정보는 주석으로 적어놨습니다.
그리고 서버를 기동해 / 경로로 들어가줍니다.
만약에 인증을 해야 된다면 loginPage("loginPage")를 controller에 만들어줬기 때문에
@GetMapping("/loginPage")
public String loginPage() {
return "loginPage";
}

위와 같이 이동되어 문자가 출력이 됩니다.
잘 작동하는 것을 확인되었습니다. 이것으로 나중에 커스텀 로그인 페이지를 만들 수 있습니다.
하지만 저희는 밑의 성공 핸들러와, 실패 핸들러를 확인해야 되기 때문에 잠시 주석처리를 해줍니다.
그리고
System.out.println("Authentication: " + authentication.getName());
System.out.println("exception: " + exception.getMessage());
여기에 브레이크 포인트를 걸고 디버그 모드로 서버를 다시 켜줍니다.
user아이디와 비밀번호를 1111 쳐주면 인증이 성공되어서 successHandler를 호출하게 됩니다.

아이디와 비밀번호를 설정한 것과 동일하게 입력하면 successHandler의 브레이크 포인트가 걸려 잘 authentication객체가 잘 들어와 있는 것을 알 수 있습니다.
잘못 쳤을 경우에는 failureHandelr로 가겠죠? 이렇게 성공, 실패 핸들러 검증을 완료했습니다.
그리고
. usernameParameter("userId")
. passwordParameter("passwd")
를 디폴트 값이 아니라 이렇게 설정해주면 로그인 화면에서

name 값이 자동으로 설정되는 것을 알 수 있습니다. 이렇게 해서 인증처리를 할 때 파라미터를 본인이 구현하는 프로젝트에서 pk값이나 인증할 수 있는 값으로 바꿔서 사용할 수 있습니다.
'Spring Boot > Spring Security' 카테고리의 다른 글
| [Spring Security] 동시 세션제어, 세션 고정 보호, 세션정책 (0) | 2022.06.29 |
|---|---|
| [Spring Security] Remember Me 인증, RememberMeAuthenticationFilter (0) | 2022.06.29 |
| [Spring Security] Logout처리, LogoutFilter (0) | 2022.06.29 |
| [Spring Security] Form Login 인증 필터 (0) | 2022.06.29 |
| [Spring Security] 프로젝트 생성 (0) | 2022.06.25 |
댓글