var mockLogin = function(req, res, next) {
if (req.isAuthenticated()) { return next(); }
var user = {
nickname: 'Outsider',
// ...
};
req.login(user, function(err) {
next(err);
});
};
위와 같은 함수를 만든다. passport가 요청에 기반해서 동작하므로 요청객체가 필요하다. 현재의 요청이 인증되었는지 여부는 isAuthenticated() 함수를 사용해서 확인할 수 있다. 이 함수가 true인 경우는 인증된 상태이므로 추가 처리를 하지 않아도 된다. 보통 사용자 정보를 담고 있는 객체를 만들고(뭐 정보는 기존에 인증할 때의 사용자 객체를 출력해서 사용하면 된다.) 이를 req.login() 함수에 전달하면 passport가 로그인 처리를 한다. 코드를 보면 알겠지만 express.js기반(정확히는 Connect기반)으로 작성한 미들웨어다. (next()다음 미들웨어로 넘기는 것이다.)
app.configure(function() {
// ...
app.use(passport.initialize());
app.use(passport.session());
if (isDev) {
app.use(mockLogin);
}
app.use(app.router);
// ...
});
이 mockLogin 함수를 express.js의 설정부분에서 미들웨어로 등록한다. passport 설정후에 추가하면 되고 대신 app.router보다는 상단에 넣어야 동작한다.(real에서는 필요없으므로 개발환경에서만 동작하도록 했다.)
Comments