View on GitHub

programming-study

허원철의 개발 블로그

패스포트로 로그인하기

패스포트의 기본 사용 방법 살펴보기

> npm install body-parser --save
> npm install passport --save
// ...
app.post('/login', passport.authenticate('local')));
// ...
// ...
app.post('/login', passport.authenticate('local', {
          successRedirect: '/',
          failureRedirect: '/login'
      }));
// ...

플래시 메시지와 커스텀 콜백 이해하기

> npm install connect-flash --save
// ...
app.post('/login', passport.authenticate('local', {
          failureFlash: true
      }));
// ...
// ...
router.route('/login').post((req, res, next) => {
    passport.authenticate('local', (err, user, unfo) => {
        if (err) {
            return next(err);
        }
        if (!user) {
            return res.redirect('/login');
        }

        req.logIn(user, function(err) {
            if (err) {
                return next(err);
            }
            return res.redirect('/users/' + user.username);
        });
    });
});
// ...

스트래지티 설정과 검증 콜백

> npm install passport-local --save

로컬 인증하기

const session = require('express-session');
const passport = require('passport');
// ...

const app = express();
app.use(session({ secret: 'secret-heowc' }));
// passport 추가
app.use(passport.initialize());
// 세션에 저장 시, express-session 설정 추가
app.use(passport.session());

※ session에 저장하고자 한다면, express-session 모듈을 추가하고 설정한다.

// 세션 저장
passport.serializeUser((user, done) => {
	done(null, user);
});

// 세션 복원
passport.deserializeUser((user, done) => {
	done(null, user);
});
(req, res) => {
    if (!req.user)
    if (!req.isAuthentication())
    if (req.isUnauthenticated())
}

패스포트 관련 코드 모듈화하기

페이스북으로 로그인하기

> npm install passport-facebook --save