앞서서 배운 것을 정리해보자.
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 으로 이동.