금일 달성 항목
1) 노드 JS 숙련 과제 Lv2 진행 완료
: 회원가입, 로그인 기능 추가
문제 해결 과정 1- Virtuarl Id가 생성되지 않음
[문제]
// 내 정보 조회
router.get("/users/me", authMiddleware, async (req, res) => {
const { nickname } = res.locals.user;
res.status(200).json({
user: { nickname },
});
});
토큰이 발급된 로그인 계정을 조회하기 위한 api를 실행하는데 자꾸만 아래와 같은 오류가 떴습니다.
jsonwebtokenerror: invalid signature
[시도 및 해결]
튜터님과 확인해보니 미들웨어에 있는 토큰 아이디 키와 로그인 영역의 토큰 아이디 키가 달라서 생긴 문제였습니다.
//auth-middleware.js
const { userId } = jwt.verify(authToken, "customized-secret-key");
//routers/login.js
const token = jwt.sign({ userId: user.userId }, "customized-secret-key");
또한 혹시 몰라 쿠키를 재 설치하고
// 쿠키 설치
npm install cookie-parser
app.js에 cookie-parser가 잘 짜여져 있는지 다시 확인해 보았습니다.
const express = require("express");
const app = express();
const port = 3000;
const cookieParser = require("cookie-parser");
const postsRouter = require("./routes/posts.js");
const commentsRouter = require("./routes/comments.js");
const loginRouter = require("./routes/logins.js");
const signupRouter = require("./routes/signups.js");
const connect = require("./schemas");
connect();
app.use(express.json());
app.use(cookieParser());
app.use(express.urlencoded({ extended: false }));
app.use("/", [postsRouter, commentsRouter, loginRouter, signupRouter]);
app.get("/", (req, res) => {
res.send("Hello World!");
});
app.listen(port, () => {
console.log(port, "포트로 서버가 열렸어요!");
});
[알게된 점]
cookie를 통해서 로그인된 사용자를 전달하는 방법은 프론트와 협의하기 좋은 방향이지만 개발시에는 header로 로그인된 사용자를 설정하는 것이 더 낫다고 하셨습니다. 이와 관련해서는 공부가 더 필요해 보일 것으로 보입니다.
'혼자 고민해보기_ 개발 > TIL (Today I Learned)' 카테고리의 다른 글
20230623(금)_ 노드 JS 숙련 과제 Lv3 보완, 개인 공부 (0) | 2023.06.23 |
---|---|
20230622(목)_ 노드 JS 숙련 과제 Lv2, Lv3 완료 (0) | 2023.06.23 |
20230620(화)_ 노드 JS 숙련 강의 1회차 완료 (0) | 2023.06.21 |
20230619(월)_ 노드 JS 숙련 강의 진행 (1) | 2023.06.19 |
20230616(금)_JS 문법 종합반 2회독 시작 (0) | 2023.06.16 |