Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[fix] 로그인(인증) 및 인가에 대한 정리 및 코드 수정 #51

Open
hyunbin1 opened this issue Jul 29, 2022 · 2 comments
Open
Assignees

Comments

@hyunbin1
Copy link
Member

hyunbin1 commented Jul 29, 2022

로그인 과정:

  1. 프론트에서 카카오에 유저 인증을 요청한다.
  2. 카카오에서는 유저가 카카오에 로그인 시 백에 요청 코드를 발급해준다.
  3. 백에서는 발급된 요청 코드를 통해 카카오에 다시 accessToken을 발급 요청한다.
  4. 발급받은 accessToken은 프론트에게 건내주어 나중에 있을 인가 처리를 위한 주민등록증과 같은 역할을 할 수 있게 해준다.
    -> 요청 코드는 passport에서 알아서 해주는 것이고, 우리는 로그인 시 유저 정보를 건내줄 필요 없이 accessToken만 건내주면 된다.

[인가 처리]

이전에 우리는 로그인을 할 때 프론트에 accessToken과 유저 정보를 제공해주어야 하는지에 대한 확실한 답변을 할 수 없었다. 결론부터 말하자면 로그인 성공 시 유저 정보를 주면 안된다. 프론트에서 로그인을 요청하는 것은 유저에 대한 정보를 제공 받기 위한 것이 아니라, 유저에 대한 validation을 증명하기 위한 것이다. 유저의 정보는 마이페이지, 리뷰 확인 등 로그인 필요한 페이지에서 로그인 후 제공해주는 것이 맞다. 이때 활용하는 것이 accessToken이자 인가라는 과정이다. 우리는 특정 유저에 관련된 마이페이지를 응답해주기 위해서는 프론트로부터 http header에 있는 accessToken을 받아서 이 유저가 어떤 정보를 가지고 있는지 파악해야 한다. accessToken이 있다는 것은 유저가 인증을 했다는 것이기 때문에 별다른 의심(=인증)은 할 필요 없다. 이제 우리가 고민해야 할 부분은 accessToken은 db에 저장되어 있지 않기 때문에 어떻게 유저의 정보를 가져와 줄 것인가이다. 세션을 활용할지, 혹은 kakao에서 인증을 해준 시점에서 우리의 코드에서 자동으로 유저의 데이터를 가져올 수 있는지? 아직 잘 모르겠다.
주의해야할 점은 마이페이지를 요청했을 때 로그인 되어있지 않은 유저는 아직 로그인되어 있지 않다고 경고해 주는 것이다. 이때 ui/ux를 어떻게 해야될 지 고민해야 될 것 같다.

@hyunbin1
Copy link
Member Author

위의 질문에 대해 인가를 위한 방법으로는 AuthGuard를 활용하면 될거 같기도 하다.
참고 사이트: https://velog.io/@fj2008/NestJsJWT-%EB%A1%9C-%EC%9D%B8%EC%A6%9D%ED%9B%84-%EC%9C%A0%EC%A0%80%EC%A0%95%EB%B3%B4-%EA%B0%80%EC%A0%B8%EC%98%A4%EA%B8%B0

@hyunbin1
Copy link
Member Author

참고 사이트: https://velog.io/@ingyocode/TIL-NestJS-%EA%B3%B5%EB%B6%80-36%EC%9D%BC%EC%B0%A8
이 분의 TIL을 하나씩 다 읽어 보는 것도 도움이 많이 된다.

@bluesun147 bluesun147 changed the title [fetch] 로그인(인증) 및 인가에 대한 정리 및 코드 수정 [fix] 로그인(인증) 및 인가에 대한 정리 및 코드 수정 Jul 30, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants