Spring Security 로그인 여부 확인

김아무개·2023년 5월 24일
0

해야됨

목록 보기
1/1

진행 했던 과제 내용 중에

Spring Security로 구현된 부분이 있었고,

과제를 진행하려면 Spring Security로 구현된 부분에 대한 이해가 필요했기 때문에

살짝 맛보는 Spring Security!


이해가 필요했던 부분은

계정 관리 - 로그인 / 로그아웃 에 대한 부분이다.


보고 배운 블로그 : @dailylifecoding

구글링 해보고 알아낸 정보는

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

1. 인증 확인

SecurityContext 에서
인증 세부 정보를 가져온 다음 사용자가 로그인 했는지 확인해야 한다.

private boolean isAuthenticated() {
    Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
    if (authentication == null || authentication instanceof AnonymousAuthenticationToken) {
        return false;
    }
    return authentication.isAuthenticated();
}

2. 로그인 컨트롤러에서 리다이렉션

 @RequestMapping("/member/login")
    public String login() {
        
        // 로그인 인증 성공시 첫 화면으로 보냄
        if (isAuthenticated()) 
            return "index";

		// 로그인 인증 실패 시 로그인 화면 진입
        return "member/login";
    }
profile
Hello velog! 

0개의 댓글