deserializeUser가 호출이 되지 않습니다. undefined문제
641
작성한 질문수 1
안녕하세요, nodejs를 이 강의로 학습하고 있는 학생입니다. 이 영상을 보고 따라했는데 제 컴퓨터에서 deserializeUser가 호출되지 않고 그에 따라서 main.js가 컴퓨터 network에서 404를 나타내며 user에 값을 담아내지 못하고 있었습니다 소스코드는 다음과 같습니다. 그리고 결과값은 아래처럼 나왔습니다. 인터넷에서는 cookie secure를 false로 하면 해결할 수 있다그래서 시도해보았는데 잘 모르겠어서 이렇게 글을 올립니다 감사합니다.
// 결과값입니다.
get join url
Session {
cookie: { path: '/', _expires: null, originalMaxAge: null, httpOnly: true },
flash: {}
}
47
passport session save : 47
{ email: '1234ㄹa', id: 47 }
main js loaded undefined
Session {
cookie: { path: '/', _expires: null, originalMaxAge: null, httpOnly: true },
flash: {},
passport: { user: 47 }
}
//여기 아래가 소스코드입니다
router.get('/', function(req, res){
var msg;
var errMsg = req.flash('error')
if(errMsg) msg = errMsg;
console.log('get join url');
console.log(req.session)
res.render('join.ejs', {'message' : msg});
})
passport.serializeUser(function(user, done){
console.log('passport session save : ', user.id);
console.log(user);
done(null, user.id);
})
passport.deserializeUser(function(id, done){
console.log('passport session get id data: ');
done(null, id);
})
passport.use('local-join', new LocalStrategy
(
{
usernameField: 'email',
passwordField: 'password',
passReqToCallback : true
},
function(req, email, password, done)
{
var query = connection.query('SELECT * FROM user WHERE EMAIL = ?', [email], function(err, rows)
{
if(err) return done(err);
if(rows.length)
{
console.log('existed user');
return done(null, false, {message : 'your email is already used'})
}
else
{
var sql = {email: email, name: 'hi', pw: password};
var query = connection.query('INSERT INTO user SET ?', sql, function(err, rows)
{
if(err) throw err;
return done(null, {'email' : email, 'id' : rows.insertId});
})
}
})
}
));
//passport routing 처리
router.post('/', passport.authenticate('local-join', {
successRedirect: 'main',
failureRedirect: 'join',
failureFlash: true
}));
module.exports = router;
답변 2
0
passport.deserializeUser((id, done) =>{// seesion 에서 id값을 뽑아서 처리 해주는 곳console.log('passport session get id data: ', id);
//여기서 db의 값을 찾아서 사이트에 띄워주기 가능
done(null, id); //세션의 값을 뽑아서 전달해주는 역할
});
여기서 db조회해올때 id 값이 0이 나오면 0을 undefined라고 인식하는 것 같아요.
문자열이나 0이외의 값들을 넣어보시면 잘 작동되는 마법을 경험하실 겁니다.
0
저도 여기서 막혔는데 혹시 해결하셨나요??
0
기억이 잘 나진 않는데 이거 한번 돌려보시겠어요? 순서 때문에 차이가 생겼나 그랬던거 같습니다.
c오류 같은데,, 실행이 안돼요
0
314
1
Error: Failed to deserialize user out of session
0
360
0
넌적스 for 문 질문
0
199
0
Users 테이블을 만드는 sql 명령어를 좀
0
281
1
점점 사운드가 낮아지네여 ㅋㅋㅋㅋㅋ
0
164
0
쿼리 날릴때 불필요한게 있네요
0
185
0
바디 파서로 값이 들어올때
0
211
1
npm nodemon 관련 에러
0
243
0
어.... 소스코드를 어디서 찾을수 있을까요?
0
202
0
consloe.log 가 찍히지 않음
0
189
0
form.html:1 Access to XMLHttpRequest at 요런 요류
3
647
2
ejs 사용할 때 에러 나시는 분들 팁
0
703
0
과제 답안
0
197
0
모듈을 require하는 기준이 궁금합니다.
0
219
0
1분20초 부분에서 submit을 눌러도 반응이 없는데 어떤문제일까요???
0
412
1
git 올린 db자료
0
174
0
ejs를 사용하지 않아도 괜찮은가요?
0
478
0
약간 신기한 문제가 발생했습니다.
0
333
2
계속 undefind 가 뜹니다.
0
316
1
mysql 설치및 설정방법
4
217
0
form 에서 보낸게 서버측에서 읽지 못합니다..
1
280
2
Cannot read property 'email' of undefined
2
504
3
movie/list 화면의 css소스 부탁드립니다.
0
156
0
mysql연동 에러입니다.
0
498
2





