본문 바로가기

WEB

Node.js로 웹서비스 만들기 19일차

로그인 했을때만 글쓰기 기능 만들기-2

 

지난번 server.js 에 내용 추가됨

복잡하니 나중에 이대로 복붙하여 사용하면 될듯

 

//server.js

app.get('/login', function(request, response){
    response.render('login.ejs');
});

app.post('/login', passport.authenticate('local', {
    failureRedirect : '/fail'
}), function(request, response){
    response.redirect('/');
});
//로그인 정보 검증
passport.use(new LocalStrategy({
    usernameField: 'id',
    passwordField: 'pw',
    session: true,
    passReqToCallback: false,
  }, function (입력한아이디, 입력한비번, done) {
    //console.log(입력한아이디, 입력한비번);
    db.collection('login').findOne({ id: 입력한아이디 }, function (에러, 결과) {
      if (에러) return done(에러)
  
      if (!결과) return done(null, false, { message: '존재하지않는 아이디요' })
      if (입력한비번 == 결과.pw) {
        return done(null, 결과)
      } else {
        return done(null, false, { message: '비번틀렸어요' })
      }
    })
  }));

//로그인 성공시 세션데이터 만드는 법
passport.serializeUser(function(user, done){
    done(null, user.id)
});

//마이페이지 등 접속시 이 세션 데이터를 가진 사람을 DB에서 찾아주세요
passport.deserializeUser(function(id, done){
    done(null, {})
});

 

사전에 몽고디비에 테스트용으로 만들어둔 아이디와 패스워드를 가지고 테스트를 해본다.

login 이라는 컬렉션에 아이디와 패스워드를 테스트용으로 등록해둔다

 

 

아이디와 패스워드 입력하면

 

app.post('/login', passport.authenticate('local', {
    failureRedirect : '/fail'
}), function(request, response){
    response.redirect('/');
});

여기에 작성된것 처럼

실패시 /fail 

성공시 / 로 리다이렉트된다

그리고

세션데이터를 만들게 됨

 

그렇다고 한다.