3 글 보임 - 1 에서 3 까지 (총 3 중에서)
-
글쓴이글
-
2022년 7월 20일 10:42 #39056
대영참가자안녕하세요 해당강의 다듣고 실습하는 도중 문제가 생겼습니다. 1. 강의 마지막 전까지 모든 기능이 다 잘 작동됐는데, 딱 마지막, /mypage 로 이동하는게 모두 실패로 돌아갑니다. if(req.user){ next() } else{ res.send('you need to login') } 에서 무조건 you need to log인이 뜨게됩니다. 실제로 application 패널에서 쿠키도 확인했으나, 무조건 else의 경우로 이동합니다. (req.user가 undefined로 뜹니다.) 2. 만약 로그인 페이지에서 아이디나 비번이 틀리면 { message: '존재하지않는 아이디요' } 등을 볼 수 있을거라 기대했는데, app.get('/fail',function(req,res){ res.send('fick') }) 바로 실패 페이지로 이동해버립니다. 그렇다면 저 메세지는 어디에서 볼 수 있는 것일까요? 소스코드는 아래와 같습니다. 도움 부탁드립니다.
// 세션 로그인 기능 관련 라이브러리 const passport = require('passport'); const LocalStrategy = require('passport-local').Strategy; const session = require('express-session')
app.use(session({secret:'SECRET',resave:true,saveUninitialized:false})) app.use(passport.initialize()); app.use(passport.session())
app.post('/login', passport.authenticate('local',{failureRedirect:'/fail'}),function(req,res){ res.redirect('/') })
passport.use(new LocalStrategy({ usernameField: 'id', passwordField: 'pw', session: true, passReqToCallback: false, }, function (inputid, password, done) { db.collection('member').findOne({ id:inputid }, function (err, res) { if (err) return done(err) if (!res) return done(null, false, { message: '존재하지않는 아이디요' }) if (password == res.pw) { return done(null, res) } else { return done(null, false, { message: '비번틀렸어요' }) } }) })); passport.serializeUser(function(user,done){ done(null,user.id) })
// 마이페이지 볼 때 사용, 이사람이 어떤 사람인지 해석할 때 passport.deserializeUser(function(user,done){ //db에서 위에있는 user.id로 유저를 찾은 뒤에 유저정보를 res에 넣음 console.log(user) db.collection('login').findOne({userid:user},function(err,res){ done(null,res) }) }) app.get('/fail',function(req,res){ res.send('fick') })
const isLogin = (req,res,next) => { console.log(req.user) if(req.user){ next() } else{ res.send('you need to login') } }
app.get('/mypage',isLogin,function(req,res){
res.render('mypage.ejs') })
2022년 7월 20일 14:45 #39068
codingapple키 마스터한 곳에선 member컬렉션 한 곳에선 login 컬렉션에서 각각 유저정보를 찾고 있는게 좀 이상해보입니다 2번은 flash 메세지 어쩌구 검색해보면 사용가능합니다
-
글쓴이글
3 글 보임 - 1 에서 3 까지 (총 3 중에서)
- 답변은 로그인 후 가능합니다.