아아 과제 중에 accessToken을 갖고 있으면 내 정보로 들어갈 수 있는 미들웨어를 만들어야했따..
과제 조건은 authorization에 있는 token과 Bearer을 가져와야 하는데 나는... req.headers을 아무리 찾아봐도 authorization을 찾지 못했다...
그래서 내가 찾아낸 결론은!! 그냥 accessToken을 불러와서 token이 있으면 실행을 하게 하고 없으면 실행을 안 되게 만들었다.
const id = user.dataValues.userId;
// Access Token을 생성합니다.
function createAccessToken(id) {
const accessToken = jwt.sign(
{ id: id }, // JWT 데이터
SECRET_KEY, // 비밀키
{ expiresIn: "12h" }
); // Access Token이 12시간 뒤에 만료되도록 설정합니다.
return accessToken;
}
const accessToken = createAccessToken(id);
res.cookie("accessToken", accessToken);
로그인 할때 토큰을 생성해주고
const token = req.cookies.accessToken;
console.log(token);
if (!token) {
res.status(401).send({
errorMessage: "로그인 후 이용 가능한 기능입니다.",
});
return;
}
try {
const { userId } = jwt.verify(token, SECRET_KEY);
Signs.findOne(userId).then((user) => {
res.locals.user = user;
next();
});
미들웨어에서 accessToken을 token에 저장해준다.
그리고 jwt.verify를 이용해서 findOne에 맞는 것을 실행한다!!
그리고
app.js에서
app.use("/api/auth/me", authMiddleWare, async (req, res) => {
const email = res.locals.user.email;
const nickname = res.locals.user.nickname;
res.json({
user: {
email,
nickname,
},
});
});
내 정보로 갈 수 있게 해준다
그래도 해냈다..