FormLogin

전성수·2024년 4월 10일

B305 자율프로젝트

목록 보기
1/2
  • 사용자가 서버에 특정 URL을 요청하면 해당 URL이 인증이 필요한 경우 서버는 Login 페이지를 return
  • 사용자가 username과 password를 입력하여 로그인 요청을 하면 해당 데이터가 서버에 전송됨
  • 서버는 해당 로그인 정보를 확인 후 해당 유저 정보가 존재한다면 Session과 Token을 생성하고 저장
  • 이런 과정을 거친 후 사용자가 원래 접속하려던 url에 접속 요청을 할 경우 세션에 저장된 인증 토큰으로 접근할 수 있게 되며 세션에 인증토큰이 있는 동안은 해당 사용자가 인증된 사용자가 됨.
protected void configure(HttpSecurity http) throws Exception {
    http.formLogin()
       .loginPage(/login.html")   			// 사용자 정의 로그인 페이지
       .defaultSuccessUrl("/home)			// 로그인 성공 후 이동 페이지
       .failureUrl(/login.html?error=true)	        // 로그인 실패 후 이동 페이지
       .usernameParameter("username")			// 아이디 파라미터명 설정
       .passwordParameter(“password”)			// 패스워드 파라미터명 설정
       .loginProcessingUrl(/login")			// 로그인 Form Action Url
       .successHandler(loginSuccessHandler())		// 로그인 성공 후 핸들러
       .failureHandler(loginFailureHandler())		// 로그인 실패 후 핸들러
}
  • loginPage(): 인증이 필요할 때 이동하는 페이지를 설정하는 api.
    • 해당 api를 설정하지 않으면 기본적으로 spring security가 제공하는 템플릿으로 연결.
    • 작성한 코드로 인증이 필요할 때 해당 URL로 mapping
  • defaultSuccessUrl(): 인증이 성공했을 때 default로 이동하는 URL을 지정하는 api
  • loginProcessingUrl: 폼태그의 action url을 설정하는 api
  1. Form Login을 사용하게 된다면 인증 필터인 UsernamePasswordAuthenticationFilter가 실행

  2. AntPathRequestMatcher가 요청정보를 체크해서 일치하지 않으면 Filter로 보냄

  3. 일치하면 username과 password 정보가 담긴 Authentication 객체를 생성해서 AuthenticationManager에 넘김

  4. AuthenticationManager는 이전 과정에서 받은 Authentication 객체를 AuthenticationProvider에 넘김

  5. AuthenticationProvider는 실직적으로 인증을 체크.
    인증에 성공하면 인증된 Authentication 객체를 생성

  6. AuthenticationManager 가 인증된 Authentication 객체를 넘김

  7. 최종 Authentication 객체가 Security Context에 저장

  8. 이후에는 SecurityContextHolder.getContext().getAuthentication()코드를 통해 인증객체를 꺼내 쓸 수 있음.


  • requestMatchers()
    • 요청 타입에 따라 URL 패턴을 지정
    • requestMatchers(HttpMethod.GET,"/") HTTP 매서드 중 GET 요청 처리 가능
  • antMatchers()
    • URL 패턴에 대한 접근 권한을 설정
    • 일반적으로 사용
profile
ㅡ/ㅡ

0개의 댓글