-
Notifications
You must be signed in to change notification settings - Fork 5
Passport 공식문서 정리
JiEun Lee edited this page Nov 8, 2020
·
3 revisions
- 내장 옵션이 인증 요청을 처리하기에 충분하지 않은 경우 Custom Callback(사용자 정의 콜백)을 통해 처리 할 수 있다.
- Passport는 세션을 지원하는데 우리 프로젝트에서는 토큰을 사용하기 때문에 세션을 비활성화 해야 한다. Custom Callback에서는 req.login()을 호출하지 않으면 된다.
app.get('/login', function(req, res, next) {
passport.authenticate('local', function(err, user, info) {
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);
});
})(req, res, next);
});
- 사용자 인증 성공 여부에 따라 확인 콜백 인자가 달라진다.
// 1. 인증에 성공한 경우
return done(null, user);
// 2. 인증에 실패한 경우(ex. 비밀번호 틀림)
return done(null, false);
// 3. 실패 이유를 메세지로 전달 가능
return done(null, false, { message: 'Incorrect password.' });
// 4. 예외 발생(ex. 데이터베이스를 사용할 수 없는 경우)
return done(err);
- 3번의 인증 실패의 경우 서버가 정상적으로 작동하는 자연스러운 조건이고, 4번은 서버의 예외 처리로 동작하기 때문에 두 개를 구별해서 사용하는 것은 중요하다.
- ID와 Password를 사용한 사용자 인증 처리 모듈
- JSON 웹 토큰을 사용한 사용자 인증 처리 모듈
- Request에서 토큰을 추출하는 방법은
jwtFromRequest
옵션을 통해 설정할 수 있다. - 쿠키에서 토큰을 추출할 경우
Custom Extractor function
(사용자 지정 추출기 함수)을 작성해야 한다.
var cookieExtractor = function(req) {
var token = null;
if (req && req.cookies)
{
token = req.cookies['jwt'];
}
return token;
};