API 서버에서 로그인 처리하기

NellDora·2024년 4월 2일
0

스프링

목록 보기
8/10

API 서버에서 로그인 처리

일반 백엔드 서버와 API 서버에서 로그인 처리 차이점?

크게 차이는 없다. 그러나 한 가지 명시해야할 점이 있다.
서버에서는 로그인 후 유저가 이용하는데 필요한 정보를 세션에 저장을 한다.
API 서버는 세션에 정보를 저장하지 않으며 무상태 서버가 유지되어야한다.

Member Entity

로그인을 위한 유저 정보부터 등록을 합시다.

memberRoleList의 경우 생성과 별개로 추가 되는 일대다 관계의 OneToMany와는 다른 부분이기 때문에 ElementCollection으로 해두었으며 핵심내용은 이 부분이 아니기 때문에 생략.

MemberDTO


MemberDTO는 Security에서 제공하는 User를 상속

UserDetailService

Security 로그인에 사용할 UserDetailService를 구현

loginUserByUsername 메서드를 오버라이딩하여 유저 조회 불가능 시 예외, 있으면 멤버 반환처리이며 반환 값은 UserDetails이다.
Security에서 제공하는 User는 UserDetails를 상속받고 있으므로 반환값으로 사용 가능

Security

SecurityFilterChain에서 http 설정을 해주어야한다.

SessionManagement 설정을 세션 생성 X로 설정해둔다.
그리고 로그인 API 주소를 설정하고 로그인 성공시 호출 핸들러와 실패 핸들러를 설정.

SuccessHandler

위에서 API 서버는 세션에 값을 저장하지 않는다고 했었다.

유저의 정보를 JSON으로 프론트 서버로 전송하기 위해 Gson을 이용하여 Json 값을 만들어서 넘겨주도록하자
HttpServletResponse를 이용하여 ContentType 설정, JSON을 넘겨주면 된다.

데이터 송수신 양호

profile
불타오르는 백엔드 개발자

0개의 댓글