post가 아닌 ajax 또한 passport를 통해 인증을 거칠 수가 있는데,
passport.use('local-login',new LocalStrategy({
usernameField:'email',
passwordField:'password',
passReqToCallback : true
},function(req,email,password,done){
console.log(1);
var query=connection.query('select *from user where email=?',[email],function(err,rows){
console.log('passport use local-join start');
if(err) return done(err);
if(rows.length){
return done(null,{'email':email, 'id': rows[0].UID})
}else{
return done(null,false,{'message': 'your login info is not found.'})
}
})
}))
router.post('/',function(req,res,next){
passport.authenticate('local-login',function(err,user,info){
if(err) res.status(500).json(err);
if(!user) {return res.status(401).json(info.message);}
req.logIn(user,function(err){
if(err){return next(err);}
return res.json(user);
});
})(req,res,next);
})
에러가 발생되면 err 에 저장이 되고, 위에서 false 값이면 user에 false 가 된다. info에는 message 값이 들어가게 되는데
if(result.email) {
sel_div.innerHTML="welcome, "+result.email+'!!';
}else sel_div.innerHTML=result;
.ejs 에서 result로 뽑아냈을 시에 message를 출력할 수 있게 된다.user 를 res.json 하면 var result=JSON.parse(xhr.responseText); 이쪽으로 받아오게된다.
user가 false 인 경우 authenticate error 인 401 에러를 리턴. err 가 생길시에는 500 에러를 보냈다. res.status(x).json(n);
https://www.zerocho.com/category/NodeJS/post/57b7101ecfbef617003bf457 참고
'공부 기록들' 카테고리의 다른 글
2020.03.10 JSP (1) (0) | 2020.03.10 |
---|---|
2020.02.25-28 백엔드 공부(8) (0) | 2020.02.28 |
2020.02.14 & 02.17 백엔드 공부(5),(6) (0) | 2020.02.18 |
2020. 02. 10 백엔드 공부(4) (0) | 2020.02.10 |
2020.02.04 백엔드 공부(3) (Ajax, express, body-parser, ejs) (0) | 2020.02.05 |