Pinterest-clone-playdata / pinterest-clone

1 stars 1 forks source link

6. Authentication & Authorization #15

Open chiyoung0011 opened 2 years ago

chiyoung0011 commented 2 years ago

현재 Chiyoung 브랜치에만 푸쉬되어있는 인증/인가 로직이 있습니다. 테스트코드 부재로 곧 테스트코드 작성후 풀리퀘스트를 올릴 예정입니다.

해당 커밋에 코멘트로 작성된 바와 같이, 현재 시간상의 이유와 직접 구현하는 보안 로직의 취약성 등을 고려하여, '소셜로그인 or JWT자체인증' 이라는 기존의 계획을, 소셜로그인(네이버, 구글)만 활용하는 것으로 변경합니다.

Config 디렉토리에 인증/인가 코드가 전부 들어있습니다. 테스트 코드 추가시 적절한 디렉토리로 재배치 분산시킬 예정입니다.

@GetMapping("/") public String index(Model model, @LoginUser SessionUser user) { if (user != null) { // user is "Authenticated" // user.getName(), user.getEmail(), user.getPicture() 등의 메소드로 유저 정보를 참조할 수 있습니다. } else { // user is "Unauthenticated" }; }

위와 같이 @LoginUser라는 커스텀 annotation을 메소드 파라미터에 붙여주면 인증된 (세션에 들어간) 유저의 정보를 확인할 수 있게 됩니다. 이를 기반으로 유저에게 액세스 권한을 부여할 수 있습니다.

현재 세션 저장소가 스프링부트 디폴트 값인 내장톰캣 세션에 저장됩니다. 따라서 서버간 세션 공유를 해야한다면 추가적인 로직을 구현해야 합니다. 또한 서버를 종료하면 세션이 리셋됩니다. 따라서 추후 PostgreSQL로 이동할 예정입니다.