솔직히 인증인가는 파일도 많고 하다보면 뭔 소리인지 모르겠을 때가 많다...
하나씩 정리해본다.
어떤 페이지를 공개할지, 어떤 페이지에 로그인이 필요한지 결정한다. (인가 설정)
대충 아래와 같은 걸 정한다고 보면 된다.
1) 로그인 페이지 경로, 로그아웃 처리 방식
2) CSRF 보호 활성화/비활성화, 세션 관리 정책
3) CustomAuthenticationFilter 같은 커스텀 필터를 시큐리티 필터 체인에 등록
아까 시큐리티 설정에 등록했다면 사용자의 로그인 시도를 직접 가로채서 처리한다.
1) 일반적인 아이디/비밀번호 방식 외에 다른 방식(예: API 토큰, 소셜 로그인 커스텀 처리)으로 인증을 진행할 때 사용
2) 사용자가 보낸 로그인 요청 정보(ID, PW 등)를 추출하여 AuthenticationManager에게 전달
3) 인증이 성공했을 때와 실패했을 때 어떤 행동(리다이렉트, JSON 응답 등)을 할지 정의
현재 HTTP 요청과 관련된 편의 기능을 모아둔 유틸리티 성격의 클래스. 참고로 리퀘스트라서 rq다.
1) 현재 로그인한 회원의 정보를 쉽게 가져오기 (세션이나 시큐리티 컨텍스트 접근).
2) 자주 사용하는 뒤로가기 메시지, 알림창 띄우기 등의 로직
3) 컨트롤러나 서비스 계층에서 HTTP 요청 처리를 더 깔끔하게
스프링 시큐리티 외에, 스프링 MVC 자체의 동작을 설정
1) 정적 리소스 설정: 이미지, CSS, JS 파일의 경로를 매핑
2) 인터셉터(Interceptor) 등록: 특정 요청 전후에 실행될 공통 로직을 설정
3) CORS 설정: 다른 도메인에서의 리소스 요청을 허용할지 결정
4) 포맷터/컨버터: 날짜나 데이터 형식을 변환하는 규칙을 정합니다.
"Utility"의 약자다 몰랐어 프로젝트 전반에서 공통적으로 사용하는 순수 자바 함수들을 모아놓은 클래스
1) 날짜/문자열 처리: 날짜 포맷 변경, 문자열이 비어있는지 체크
2) 암호화/해싱: 데이터를 암호화하거나 비밀번호를 체크
3) JSON 변환: 객체를 JSON으로 바꾸거나 그 반대의 작업을 수행
4) jwt 토큰 직렬화 역직렬화
비즈니스 로직과는 독립적인, 계산이나 변환 위주의 기능을 담당