인프런 커뮤니티 질문&답변

장우진님의 프로필 이미지
장우진

작성한 질문수

따라하며 배우는 노드, 리액트 시리즈 - 기본 강의

Auth 인증이 안됩니다

작성

·

208

0

User.js

userSchema.methods.generateToken = function(cb) {
//로그인 시 토큰 생성
// user id + 'loginToken'을 암호화
var user = this;
var token = jwt.sign(user._id.toHexString(),'loginToken')
user.token = token;
user.save(function (err, user){
if(err) return cb(err)
cb(null, user);
})
}
userSchema.statics.decodeToken = function (token, cb) {
//토큰을 복호화 하여 _id를 얻고 이를 데이터베이스에서 조회
var user = this;
jwt.verify(token,'loginToken',function(err, decode){
user.findOne({'_id':decode, 'token':token}, function(err, user){
if(err) return cb(err);
cb(null, user);
})
})
}

auth.js

const { User } = require('../models/User')

let auth = (req, res, next) => {
//로그인 인증 처리
//클라이언트 쿠키에서 토큰 가져오기
let token = req.cookies.x_auth
//토큰 복호화 후 데이터베이스에서 유저 정보 찾기
User.decodeToken(token, (err,user)=>{
if(err) throw err
if(!user) {
return res.json({
authentication : false,
error : true,
message: '토큰 정보가 존재하지 않습니다.'
})
}
//호출된 곳의 req로 token과 user정보 보냄
req.token = token
req.user = user
next()
})
}

module.exports = { auth }

데이터베이스 user 인스턴스에 쿠키와 같은 토큰이 저장되어있는데 자꾸만 

if(!user) {
return res.json({
authentication : false,
error : true,
message: '토큰 정보가 존재하지 않습니다.'
})
}

이쪽으로 들어가요,, 어떤 것이 문제일까요?

답변 4

0

John Ahn님의 프로필 이미지
John Ahn
지식공유자

안녕하세요 우진님 ! 
제가 답장이 늦었네요 ㅠㅠ 
다음에도 막힐떄는 꼭 질문주세요  
화이팅입니다 ~ !!!! 

0

장우진님의 프로필 이미지
장우진
질문자

"-"가 쿠키 key name으로 허용이 안되었나 봅니다.. 감사합니다!

0

장우진님의 프로필 이미지
장우진
질문자

쿠키를 가져오는 부분이 잘못된 것 같습니다. x-auth를 x_auth로 타이핑 한 것을 발견해서 수정했지만 쿠키 가져오는 값이 NaN이 뜹니다..

0

장우진님의 프로필 이미지
장우진
질문자

강사님 콘솔 확인해보니 jwt verify로 decoded된 값이 undefind로 나오네요.. 어디서 잘못 된 걸까요,,?

장우진님의 프로필 이미지
장우진

작성한 질문수

질문하기