20.08.17 15:42 작성
·
172
0
마지막 인증체크 부분이 잘 이해가 되지 않아서 질문 글 올립니다.
제가 이해하기로는 'backend 폴더 index.js에서 auth가 실행되는데 이 때 클라이언트의 토큰 값을 통해서 DB에 해당하는 유저가 있는지 확인을 한 이후에, res.state(200)으로 값을 반환을 한다' 이렇게 이해를 했는데요
중간 과정이 잘이해가 되지 않습니다. backend 폴더 index.js의 app.get('/api/users/auth', auth, (req, res) => { ... } 의 auth가 실행될 때
auth.js 파일의 함수 let auth = (req, res, next) => {..}
안에서 req 값이나 토큰 값을 확인을 하고 싶어서 콘솔창으로 출력해보려고 했는데도 아무런 값이 출력이 되지 않아서 왜 그런지 잘 이해가 되지 않고, 아래처럼
req.token = token;
req.user = user;
req 값이 출력이 되지 않는 상태인데도 위처럼 token 값과 user값이 어떻게 할당이 되는지 잘 이해가 되지 않습니다 ..
답변 2
0
2020. 08. 18. 19:30
아래는 middleware 폴더의 auth.js 파일 안에 작성한 코드인데요, console.log로 작성한 부분이, 로그인, 로그아웃 과정에서도 아무런 값이 출력이 되지 않습니다. 로그인, 로그아웃등 기능은 제대로 작동을 하는데 아무런 값이 출력이 되지 않는데 혹시 제가 흐름을 잘못이해하고 있는지, 다시 한번 질문드립니다!
const { User } = require('../models/User');
let auth = (req, res, next) => {
//인증 처리를 하는 곳
// 1. 클라이언트 쿠키에서 토큰을 가져 온다
// cookie parser 이용
//안찍힘*
console.log('auth req', req);
let token = req.cookies.x_auth;
//안찍힘*
console.log('auto token: ', token);
//2. 토큰을 복호화 한 후 유저를 찾는다d
// 쿠키를 가져와서 로그인한 유저인지, 로그인 하지 않은 유저인지 판단을 해서
// 리액트 부분에 그 정보를 전달해준다
User.findByToken(token, (err, user) => {
console.log('asdfsdf');
if (err) throw err;
if (!user) return res.json({ isAuth: false, error: true });
// 유저가 있으면,
req.token = token;
req.user = user;
//안찍힘*
console.log('auto token: ', token);
console.log('auto user: ', user);
console.log('asdfsdf');
next(); // next하는 이유는 middleware에서 계속 갈 수 있도록, next 없으면 미들웨어 갇히게 된다
});
// 3. 유저가 있으면 인증 okay
//4. 유저가 없으면 인증 NO
};
module.exports = { auth };
0
2020. 08. 17. 23:29
안녕하세요 ibtg님 ~
현재 req.token 과 req.user의 값이 없기 때문에 token에 있는 값을 req.token안에다가
그리고 user에 있는 값을 req.user에다가 넣어주는 과정입니다 ~
console.log(token)
console.log(user) 이런식으로 체크해보시면 둘다 값이 있음을 볼수 있습니다 ~ !