앞서서 배운 것을 정리해보자.

var passport = require('passport')
var LocalStrategy = require('passport-local').Strategy;

passport 를 require하고, passport-local 전략을 가져와서 require한다.

passport 를 사용하기 위해서 등록을 해야하는데,

app.use(passport.initialize());
app.use(passport.session());

해당 코드를 통해서 등록을 했다.

session 을 등록한 이후에 작성해야 코드가 작동한다.

로그인을 하는 과정에서, passport-local 를 사용했다.

app.post(
  '/auth/login',
  passport.authenticate(
    'local',
    {
      successRedirect: '/welcome',
      failureRedirect: '/auth/login',
      failureFlash: false
    }
  )
);

local 을 사용하기 위해서, local-strategy 를 등록했다.

passport.use(new LocalStrategy(
  function(username, password, done) {
    var uname = username;
    var pwd = password;
    for (var i = 0; i < users.length; i++) {
      var user = users[i];
      if (uname === user.username) {
        console.log('LocalStrategy',user);
        return hasher({
          password: pwd,
          salt: user.salt
        }, function(err, pass, salt, hash) {
          if (hash === user.password) {
            // 사용자가 맞다면
            done(null, user);
          } // 사용자가 아니라면
          else {
            done(null, false);
          }
        });
      }
    }
    // users 배열에 아예 없다면, 로그인 실패.
    done(null, false);
  }
));

form 에서 전달받은 사용자의 입력정보를 가져와서 passport를 통해서 확인하는 작업을 진행했다.

사용자가 맞다면, user 정보를 전달한다.

로그인에 성공했다면, /welcome 페이지로 이동.

실패했다면, /auth/login 으로 이동.