목록전체 글 (138)
나의 개발일지(김지헌)
오늘은 과제를 제출하는 날이었는데 서버 배포를 하는 과정과 다른 문제들이 많이 있었는데 https http 사이 Cookie 전달 불가능한 현상 발생. 클라이언트 브라우저에 쿠키가 담기나, axios header가 이것을 받아오지 못하는 문제가 있었고 서버 배포 시 프로토콜이 동일하지 않아서 발생하는 문제였고 프런트, 백 앤드 둘 다 같은 프로토콜로 실행을 했지만 Cookie값을 주고받고 하는 것이 문제가 되었다. 그래서 서버쪽에서는 로그인을 하면 response로 토큰을 보내주고 프런트에서는 그것을 받아서 로컬 저장소로 저장하여 headers에 담아서 서버 쪽으로 보내주는 것으로 구현을 했는데 서버에서 토큰 검증하는 미들웨어가 Cookie로 받아오는 것으로 구현을 했기 때문에 req.Cookie에서 r..
어제 리프레쉬 토큰과 에쎼스 토큰을 하나하나 뜯으면서 미들웨어 작업을 끝 마쳤다. module.exports = async (req, res, next) => { //쿠키로 받아온다. let userId const accessToken = req.cookies.AccessToken const refreshToken = req.cookies.RefreshToken //토큰이 없다면~ if (!accessToken) return res.status(400).json({ "message": "Access Token이 존재하지 않습니다." }); //리프레쉬 토큰 확인하기 if (!refreshToken) return res.status(400).json({ "message": "RefreshToken이 존재하..
어제 AccessToken과 RefreshToken을 가지고 로그인 기능을 구현한다고 했고 코드는 발급 까지는 완성을 했다. 강의 코드를 하나하나 뜯어서 보면서 코드를 작성하고 있다 로그인 컨트롤러 login = async (req,res,next)=>{ try{ const {nickname, password} = req.body const RefreshToken = await this.loginsevice.createRefreshToken({nickname,password}) const AccessToken = await this.loginsevice.createAccessToken({nickname,password}) //AccessToken의 // res.cookie('AccessToken',`Be..
프로젝트에 대한 기능구현을 끝났고 리프레쉬 토큰과 에쎄스 토큰을 써보고 싶어서 공부중이다. Refesh Token은 사용자의 인증정보를 사용자가 가지고 있는 것이 아닌, 서버에서 해당 사용자의 정보를 저장소 또는 별도의 DB에 저장하여 관리합니다. 그렇기 때문에, 서버에서 특정 Token 만료가 필요할 경우 저장된 Token을 제거하여 사용자의 인증 여부를 언제든지 제어가 가능하다는 장점이 있습니다. 리프레쉬 토큰을 메모리에 저장하는 방법도 있다 app.js 더보기 // app.js const jwt = require("jsonwebtoken"); const cookieParser = require("cookie-parser"); const express = require("express"); const..
WIL 주제 CORS(교차 출처 자원 공유 방식) Cross-Origin Resource Sharing 더보기 Cross-Origin이니까 Same-Origin, 동일 출처의 반대 개념이다. 다른 출처간에 리소스를 공유 할 수 있도록 하는 걸 말한다. 출처는 보내고 받는 각각의 위치이며 웹사이트나 api의 주소 이며 리소스는 주고 받아지는 데이터이다. 서로 다른 출처끼리 정보 요청과 반환이 가능하게 해주는 것이 CORS이다. 합의된 출처들 간에 합법적으로 허용해주기 위해 기준을 충족 시키면 리소스 공유가 되도록 만들어진 메커니즘이다 요청을 받는 백엔드쪽에서 이걸 허락할 다른 출처들을 미리 명시해 두면 되는데 옵션을 넣어서 쉽게 가능하다 -프론트에서 백엔드로 api요청을 보내면 다른 출처의 요청이므로 cr..
본격적으로 api를 구성하기로 하고 api설계서를 짜고 나서 설계에 들어갔다. 게시글 작성 POST /form { title: "게시글 제목입니다.", content: "content 입니다." imageUrl:”” } 설계를 완료 하고 코드를 짯었는데 오류가 떳는데 deletePost = async (req, res, next) => { const { postId } = req.params const { userId } = res.locals.user await this.postsService.deletePost(postId, userId) res.status(201).json({ "message": "게시글 삭제에 성공하였습니다" }); } 컨트롤러에서 서비스로 postId와 userId를 보내주는데..
오늘은 미니프로젝트를 하는 주차이고 모여서 주제를 선정하고 진행 했다. 프로젝트 이름 : 어스그린(Earthgreen) 프로젝트 설명 : 최근 환경문제와 관련된 이슈가 많은 상황에서 사람들의 자발적인 환경운동 참여를 유도하고자 개발한 공유 플랫폼입니다. 사소한 변화가 지구에 생명을 불어넣습니다. 라는 내용과 주제로 선정하고 진행헀다. 리액트 분들과 메인 색상은 어떤거 할 지 이야기하고 기능 추가를 뭘 더 할지 생각 중이다.
Sequelize의 Test 환경 구성하기 더보기 Sequelize로 MySQL을 연결할 때, NODE_ENV를 test로 설정할 경우 기존에 설정된 DB가 아닌, config.json에 test 부분에 설정된 값으로 DB를 연결 할 수 있습니다. Integration Test를 실행할 때, 기존에 사용하는 Development 환경이 아닌, test DB를 사용할 경우 데이터를 언제든지 자유롭게 관리 할 수 있고, 생성 및 삭제가 쉽게 가능해집니다 많이 사용하는 Jest 문법 더보기 .toBe(value) 입력받은 결과값과 동일한지 비교합니다. 만약 Instance를 비교하려 한다면, Instance의 ID까지 비교하므로 엄격하게 동일한지 검증합니다. .toEqual(value) 입력받은 결과값과 동일..