https://github.com/Daniel-Jeon/project1/commit/7b288ce88bae658e4143189d06b821b1b43494a7export const startKakaoLogin = (req, res) => { const baseUrl = "https://kauth.kakao.com/oauth/authorize"; const config = { client_id: process.env.KAKAO_API_KEY, redirect_uri: process.env.KAKAO_REDIRECT_URI, response_type: "code", }; const parameters = new URLSearchParams(config).toString(); retur..
다시 이 망할 흐름을 살펴볼때가 됐다.API에 나와있듯 사용자의 GET https://github.com/login/oauth/authorize 요청이 필요하므로 버튼을 해당 링크로 이동하게 한다.근데 이대로만 보내면 404가 에러가 뜨는데 url 뒤에 파라미터를 붙여서 보내야 한다.client_id는 필수고 그외 본인이 필요한 파라미터들을 추가하여 보낸다.이 부분을 효율적으로 관리하기위해 라우터와 컨트롤러에 따로 startGithubLogin을 만들어 관리한다.이번 프로젝트에선 메일 주소만 필요하다 생각하여 scope에는 user:email만 추가하였다.URLSearchParams를 사용하여 파라미터를 관리하여 gthub로 유저를 효율적으로 보낸다.유저가 수락하게 되면 Authorization call..
세션은 웹에서 유지되는 정보인데 이걸 통해 유저들의 로그인 관리를 위해 주로 사용된다express-session 모듈을 사용하여 세션 미들웨어를 만들게 되면 이제 페이지를 이동할 때마다 쿠키에 세션이 담겨져 있는걸 관리자 도구에서 확인할 수 있다.간단하게 미들웨어를 만들어 req 내부를 볼수 있는데 중간에 세션이나 세션id도 보이고 하단에 cookie도 볼수있다.초기에는 resave와 saveUninitialized를 true로 주고 모든 사용자의 세션을 생성했지만 그렇게 되면 부하가 발생할 수 있으므로 로그인한 유저만 세션이 생성될 수 있도록 false로 바꾸고 postLogin에서 아이디와 비번체크가 되고나면 세션 객체에 프로퍼티를 추가하여 객체가 변경되면 세션이 생성되록 했다.하지만 이렇게하면 세션..
조인 > 로그인을 진행하면서 했던 것들기본적으로 조인에 필요한 정보가 무엇인지 고려해야함계정명을 이메일로 하고 비밀번호 확인하고 닉네임까지이메일과 닉네임은 중복되지 않아야 하고비밀번호와 닉네임은 submit 되기 전에 이벤트로 구현을 해야하지만 현재는 백엔드에서 확인하고 있음유저 보안을 위해 비밀번호를 해싱화했고 bcrypt라는 라이브러리 사용또한 계정이 생성되기전에 해싱되야 하므로 mongoose의 미들웨어를 사용했음그 미들웨어에 save 훅을 사용했으며 document 미들웨어라서 this를 통해 userSchema의 비밀번호를 대상으로 삼을 수 있음이전에 공부했듯 비밀번호가 업데이트 될때 해싱으로 인한 문제가 발생할 수 있다는걸 기억해야 함로그인을 할때 compare를 사용하지 않고 입력받은 비밀번..
1. Fly.io - https://fly.io/ Deploy app servers close to your users · FlyA Public Cloud Built For Developers Who Ship Over 3 million apps have launched on Fly.io, leveraging global Anycast load-balancing, zero-config private networking, hardware isolation, and instant WireGuard VPN connections, with push-button deployments scalfly.io2. MongoDB Atlas - https://www.mongodb.com/ko-kr/atlas MongoDB A..
콘티를 간략하게나마 짜두는게 좋을거 같아서 파워포인트로 대충 만들었다.유튜브는 결국 홈을 가더라도 업로드된 영상들이 출력되야 하니 rootRouter는 기본적인 경로들만 분배를 한다.기본적으로 videoController에서 많은 것들을 처리하게 된다.영상 시청, 영상 업로드가 주 컨텐츠이니까.상단과 사이드바는 고정적이므로 base에 두고 로그인 여부에 따라 달라진다.로그인을 하지 않았다면, 기본적으로 상단에 검색바와 로그인, 사이드바에는 쇼츠 내페이지 시청기록 버튼을 둔다.로그인을 했다면, 기존 base에서 로그인이 사라지고 영상업로드 유저정보관리 버튼을 보이게 하고, 사이드바에서도 구독 버튼이 추가되며 내 채널을 생성한 유저일 수 있으므로 그에 따라 추가한다.사실 이과정은 별거 없기도 하고 chatg..
1. 사용할 패키지들 node.js는 기존에 브라우저 안에서만 사용되던 언어였지만 브라우저 밖에서도 사용하기 위해 만들어졌으며, 프론트엔드와 백엔드에서 동시에 사용할 수 있다는 장점이 있다. node.js에는 npm을 통해 패키지를 관리한다. npm init을 사용하여 프로젝트를 생성하고 나면 package.json이 생성된다. json은 데이터를 전송할 때 사용하는 양식이며 package.json에는 해당 프로젝트의 패키지를 관리하기 위한 문서다. 우리가 npm을 사용하여 설치한 모든 것들은 package.json의 dependencies에 기록된다. dependencies는 프로젝트를 실행하기 위한, devDependencies는 개발자를 위한 패키지들이다. express라는 node.js의 프레임워..