개발/Project2024. 12. 1. 09:49소셜 로그인은 역시 짜증

다시 이 망할 흐름을 살펴볼때가 됐다.API에 나와있듯 사용자의 GET https://github.com/login/oauth/authorize 요청이 필요하므로 버튼을 해당 링크로 이동하게 한다.근데 이대로만 보내면 404가 에러가 뜨는데 url 뒤에 파라미터를 붙여서 보내야 한다.client_id는 필수고 그외 본인이 필요한 파라미터들을 추가하여 보낸다.이 부분을 효율적으로 관리하기위해 라우터와 컨트롤러에 따로 startGithubLogin을 만들어 관리한다.이번 프로젝트에선 메일 주소만 필요하다 생각하여 scope에는 user:email만 추가하였다.URLSearchParams를 사용하여 파라미터를 관리하여 gthub로 유저를 효율적으로 보낸다.유저가 수락하게 되면 Authorization call..

개발/Node.js2024. 11. 24. 00:27Comment

0. Before start - 댓글을 구현할 건데 우리가 했던 모든 것들을 복습할거임 - 새로운 모델, 컨트롤러, 라우터, 바닐라JS, 상태코드, populate, mongoose relationship 등등 - 동적인 댓글을 구현하고 이게 끝나면 배포할 거임 - 실제 db를 사용하고 assets은 서버에 저장하면 안되니 그런 것들을 전부 수정 - 모든 시작은 데이터부터 이므로 모델 먼저 만들거임1. Comment Modelimport mongoose from "mongoose";const commentSchema = new Mongoose.Schema({ text: { type: String, required: true }, owner: { type: mongoose.Schema.Types.Obj..

개발/Node.js2024. 11. 19. 18:40Views API

1. Views - 이번에 해볼건 조회수 관리임 - 이번에는 랜더링하지 않는 views를 만들어 볼건데 이런걸 api views라고 함 - 대부분 브라우저에서 이렇게 작동하고 있는데, 요즘 시대에는 백엔드에서 템플릿을 랜더링하지 않음   - 대부분의 웹 앱은 프론트와 백을 정확히 나누고 있기 때문   - 백엔드에서 db와 인증을 처리하고 프론트에서는 리액트 같은 걸로 만듦 - 우리가 사용하고 있는 방식은 SSR(Server Side Rendering)   - 즉 서버가 템플릿을 랜더링 하는 것까지 처리   - 요즘은 리액트로 프론트를 만들고 nodejs로 백엔드를 처리   - 사실 nodejs로 템플릿을 랜더링하지 않음 - 지금 하게 될 새로운 방식의 views를 만들고 나면 차이를 알 수 있게 됨 - ..

Edit Profile / Protector and Public Middleware
개발/Node.js2024. 11. 13. 18:00Edit Profile / Protector and Public Middleware

1. Edit Profile - router나 controller쪽은 이제 이해했으므로 제외 - locals를 배웠을때를 떠올려봐야함   - 우리는 saveUninitialized=false로 했기에 session에 변경점이 있어야 cookie가 생성됨   - 현재 계정정보를 변경하려는 상태이기에 우리는 이미 로그인을 한 상태   - localsMiddleware를 통해 locals object에는 로그인한 user 정보가 들어가있음     - 굳이 controller을 통해 로그인한 user 정보를 보낼 필요가 없다는 것   - template에서도 locals를 사용할 수 있음     - locals는 자동적으로 views에 import됨 - 여기서 문제점은 로그인하지 않은 user가 url을 강제로..

개발/Node.js2024. 11. 13. 13:45Github Login / Logout

1. email - 들어가기에 앞서 굉장히 어려울 수 밖에 없는 과정이었기에 정리 - Github이 준 code를 가지고 access_token으로 교환했음 - code에는 우리가 뭘 하고자 하는 바가 명시되어 있음 - access_token은  Github API URL을 fetch하는데 사용되었고, 우리는 user의 public정보를 얻었음   - read:user를 하지 않았다면 access_token을 얻지 못했음   - access_token이 모든걸 할 수 있도록 허용한건 아니며 scope에 명시된 것만 허용해줌 - 현재 read:user를 통해 user의 정보는 잘 읽고 있으나 user:email은 잘 되고있지 않음   - 사실 이렇게 잘 안되는 이유는 강사가 access_token으로 많은..

개발/Node.js2024. 11. 12. 21:34Github Login / Fetch / API

1. Github Login - 이어서 하면 github에서 authorized버튼을 누른 이후 callback url로 연결되었음 - https://docs.github.com/ko/apps/oauth-apps/building-oauth-apps/authorizing-oauth-apps#2-users-are-redirected-back-to-your-site-by-github OAuth 앱 권한 부여 - GitHub Docs다른 사용자가 OAuth app에 권한을 부여하도록 설정할 수 있습니다.docs.github.com - 공식문서의 웹 애플리케이션 흐름 2번에 따르면 github에서 받은 토큰을 access 토큰으로 바꿔줘야함 - client_id는 또 사용되기에 .env에 넣을거임   - 어차피 ..

image