inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

노드 리액트 기초 강의 #14 로그아웃 기능

로그인 시 DB token 정보 업데이트 관련 질문

275

David Heo

작성한 질문수 12

0

안녕하세요. 학습중 궁금한 점이 생겨서 질문 남깁니다. 

/api/users/login에 POST 요청을 보내면 해당 로그인 요청 정보와 일치하는 정보가 DB 내에 있는지 여부를 판독해 로그인 성공/실패가 이루어지는 것까지는 알겠습니다. 

그런데 login 요청을 보내기만 해도 DB 내에 token 정보가 업데이트되는 점이 이해가 되지 않습니다. 분명 /api/users/auth에 GET 요청을 보내야 DB 내의 token 정보를 업데이트하는 것으로 코드를 작성한 것 같은데 말이죠... 

login시 client의 cookie에 token을 저장하긴 했으나, DB에 token 정보를 업데이트하는 것은 /api/users/auth에 GET 요청을 보내야 이루어지는 것 같은데, 도대체 왜 login 요청을 보내기만 해도 DB 내의 token 정보가 업데이트되는 것인지 궁금합니다. 

답변 부탁드립니다. 

항상 좋은 강의 감사드립니다. 

nodejs react

답변 1

1

John Ahn

안녕하세요 !! 
로그인 시에 요청을 처리하는 핸들러를 보면 

router.post("/login", (req, res) => {
User.findOne({ email: req.body.email }, (err, user) => {
if (!user)
return res.json({
loginSuccess: false,
message: "Auth failed, email not found"
});

user.comparePassword(req.body.password, (err, isMatch) => {
if (!isMatch)
return res.json({ loginSuccess: false, message: "Wrong password" });

user.generateToken((err, user) => {
if (err) return res.status(400).send(err);
res.cookie("w_authExp", user.tokenExp);
res
.cookie("w_auth", user.token)
.status(200)
.json({
loginSuccess: true, userId: user._id
});
});
});
});
});

이렇게 되어있는데 여기서 generateToken 메소드가 보이시죠? 
그곳에서 토큰이 디비에 저장 됩니다. 

userSchema.methods.generateToken = function(cb) {
var user = this;
var token = jwt.sign(user._id.toHexString(),'secret')
var oneHour = moment().add(1, 'hour').valueOf();

user.tokenExp = oneHour;
user.token = token;
user.save(function (err, user){
if(err) return cb(err)
cb(null, user);
})
}

여기에 보시면 됩니다 ~ !   감사합니다.

0

David Heo

우선 답변 감사드립니다. 제가 저 부분을 놓쳤었네요 ㅎㅎ; 

근데 한가지 의문점이 더 생기게 되었습니다.  

로그인 요청시 DB에 token이 저장된다면 /api/users/auth에 GET 요청을 보내는 Router는 도대체 왜 만든 것인가요? 

현재까지는 딱히 사용되지 않은 것 같은데 말이죠... 

깃 이메일이랑 비번이 필요하다고 하네요

0

54

1

404 에러

0

120

1

34강 인증 체크에서 element 사용 때문에 에러나시는 분들 이렇게 하심 됩니다.

0

138

1

로그인, 로그아웃, 토근 작동 안 함

0

256

0

9강 오류 어떻게 해결하나요?

0

198

1

localhost 에서 연결을 거부했습니다.

0

1971

4

포스트맨에서 true가 안떠요

0

157

1

왜 안되나요

0

133

1

몽고db 연결 오류가 납니다 위에껀 입력한 코드, 아래껀 터미널이에요

0

250

1

로그아웃 401 에러(Unauthorized)

0

519

2

암호가 해싱되지 않고 입력값 그대로 db에 저장되는 문제

0

158

1

7강중에서

0

176

2

User.findByToken is not a function

0

215

1

루트 디렉토리

0

281

1

useState

0

570

1

프록시 잘 설정했는데도 404 오류 뜨는 분들

5

905

6

webpack 관련 에러 질문

0

225

1

리액트 관련 질문

0

282

1

14강 로그아웃 안됨

0

325

1

mongoDB 데이터 확인하는 법

0

414

1

postman 에러

0

297

1

선생님 리덕스를 사용하면 어떠한 부분이 좋은지 알 수 있을까요?

0

239

1

다음과 같은 에러들이 발생합니다.

0

282

1

14강 로그아웃 기능 구현시 postman에서 Cannot POST 오류가 뜹니다.

0

385

1