진행 했던 과제 내용 중에
Spring Security로 구현된 부분이 있었고,
과제를 진행하려면 Spring Security로 구현된 부분에 대한 이해가 필요했기 때문에
살짝 맛보는 Spring Security!
이해가 필요했던 부분은
계정 관리 - 로그인
/ 로그아웃
에 대한 부분이다.
구글링 해보고 알아낸 정보는
Security Config 파일을 만들어서 그 파일에서 관리를 하고 있는거였다.
내가 들고 있는 프로젝트에서도 같은 역할을 하는 파일을 발견!
protected void configure(HttpSecurity http) throws Exception {
..
..
http.formLogin()
.loginPage("/member/login")
.failureHandler(getFailureHandler())
.successHandler(getSuccessHandler())
.permitAll();
http.logout()
.logoutRequestMatcher(new AntPathRequestMatcher("/member/logout"))
.logoutSuccessUrl("/")
.invalidateHttpSession(true);
}
어쩐지 로그인 컨트롤러에 아무것도 없이 return만 되어있는데
기능을 하는게 너무 신기했다.
그런데 여기서 지금 로그인이 되어있는지 여부를
컨트롤러에서 확인하려면 또 다른 코드가 필요하다 😠
보고 배운 방법 : recordsoflife.tistory
SecurityContext
에서
인증 세부 정보를 가져온 다음 사용자가 로그인 했는지 확인해야 한다.
private boolean isAuthenticated() {
Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
if (authentication == null || authentication instanceof AnonymousAuthenticationToken) {
return false;
}
return authentication.isAuthenticated();
}
@RequestMapping("/member/login")
public String login() {
// 로그인 인증 성공시 첫 화면으로 보냄
if (isAuthenticated())
return "index";
// 로그인 인증 실패 시 로그인 화면 진입
return "member/login";
}