-
2024-06-07 TIL (TODOLIST 회원가입, 로그인 (인증,인가)만들기)카테고리 없음 2024. 6. 9. 23:10
베이직반 수업내용
나만의 TODOLSIT API 회원가입, 회원조회 인증,인가 만들기
회원가입, 로그인 api
app.post("/sign-up", (req, res) => { const { email, name, password, rePassword, role } = req.body; if (!email || !name || !password || !rePassword || !role) res.status(400).send({ message: "정보를 확인해 주세요." }); if (password !== rePassword) res .status(400) .send({ message: "password와 re-password가 일치하지않습니다." }); const existUser = users.find((el) => el.email === email); if (existUser) res.status(409).send({ message: "이미 존재하는 이메일입니다." }); const user = { userId: makeuserid(users), email, name, password, role, }; users.push(user); return res .status(200) .send({ message: "정상적으로 회원가입을 완료했습니다.", data: user }); });
app.post("/sign-in", (req, res) => { const { email, password } = req.body; if (!email || !password) res.status(400).send({ message: "email, password를 입력해주세요" }); const finduser = users.find((el) => el.email === email); if (!finduser) res .status(409) .send({ message: "회원가입되어있는 유저를 찾을수없습니다." }); if (finduser.password !== password) res.status(400).send({ message: "password가 일치하지않습니다." }); console.log(finduser); const token = jwt.sign(finduser, secretKey, { expiresIn: "10s" }); res.json({ token }); });
인증코드
app.get("/users/me", (req, res) => { const token = req.headers.authorization; console.log(token); if (!token) res.status(401).send({ message: "토큰이 없습니다." }); try { const user = jwt.verify(token, secretKey); res.json(user); } catch (e) { res.status(401).send({ message: "권한이 없습니다." }); } }); app.listen(PORT, () => { console.log(`${PORT}포트번호에 연결되었습니다.`); });
문제점
홈페이지에서 DATA를 넣어준값으로 로그인을 해주면 인증된 사용자가 아닙니다라는 문구가 나옵니다...
그래서 토큰 값이 다른건가 싶어서 토큰값을 console.log에 찍어서 나타내주면
맞는 토큰값을 출력하는 걸 볼수 있어서 다른 user가 잘못되었나 싶어서 user값을 출력시켜주면
또 맞는 값을 가져오는걸 볼수있다 ... 그래서 혹시나 insomina에서 출력된값은 어떤가 한번 확인해보았다.
authorization을 직접 넣어서 확인 해주면 이런식으로 출력이 잘되는것을 확인할수있다 ...
오늘은 이쯤 확인해보고 .. 다음날에 한번 튜터님한테 여쭈어보고 다시 한번 생각해서 적어보겠습니다.