• 카테고리

    질문 & 답변
  • 세부 분야

    풀스택

  • 해결 여부

    미해결

Auth 인증이 안됩니다

20.04.16 23:52 작성 조회수 155

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

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

0

장우진님의 프로필

장우진

질문자

2020.04.17

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

0

장우진님의 프로필

장우진

질문자

2020.04.17

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

0

장우진님의 프로필

장우진

질문자

2020.04.17

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