Express.js는 Node.js를 위한 유명한 웹 애플리케이션 프레임워크입니다. 미들웨어는 Express.js에서 핵심적인 개념 중 하나이며, 인증을 위해 미들웨어를 사용하는 방법은 매우 중요합니다.
Passport.js
Passport.js는 Express.js에서 인증을 위한 미들웨어를 쉽게 구현할 수 있게 해주는 유명한 라이브러리입니다. Passport.js를 사용하면 다양한 인증 전략을 적용할 수 있으며, Facebook, Google, Twitter 등의 소셜 로그인 인증도 간단히 구현할 수 있습니다.
설치
먼저 Passport.js를 설치해야 합니다. 다음 명령을 사용하여 패키지를 설치할 수 있습니다.
npm install passport
사용법
Passport.js를 사용하려면 먼저 Passport를 초기화해야 합니다. 다음 코드는 Express 애플리케이션에 Passport를 초기화하는 방법을 보여줍니다.
const express = require('express');
const passport = require('passport');
const app = express();
app.use(passport.initialize());
인증 전략을 적용할 라우터에서 Passport를 사용할 수 있습니다. 다음은 로컬 인증 전략을 사용하는 방법을 보여줍니다.
const LocalStrategy = require('passport-local').Strategy;
passport.use(new LocalStrategy(
function(username, password, done) {
User.findOne({ username: username }, function(err, user) {
if (err) { return done(err); }
if (!user) { return done(null, false); }
if (!user.validPassword(password)) { return done(null, false); }
return done(null, user);
});
}
));
위의 코드에서 LocalStrategy
를 생성하여 Passport에 전달하고, username
과 password
를 검증하는 로직을 작성합니다. 검증이 성공하면 done
함수에 인증된 사용자 객체를 전달합니다.
미들웨어로 인증 확인
Passport.js를 사용한 인증은 미들웨어 함수로 사용할 수 있습니다. 다음 코드는 로그인이 필요한 경로에 인증 미들웨어를 적용하는 방법을 보여줍니다.
app.get('/profile', isAuthenticated, function(req, res) {
res.render('profile', { user: req.user });
});
function isAuthenticated(req, res, next) {
if (req.isAuthenticated()) {
return next();
}
res.redirect('/login');
}
위의 예시에서 isAuthenticated
미들웨어는 req.isAuthenticated()
메서드를 사용하여 인증된 사용자인지 확인합니다. 인증되지 않은 사용자는 로그인 페이지로 리디렉션됩니다.
결론
Express.js에서의 인증은 Passport.js와 미들웨어를 사용하여 쉽게 구현할 수 있습니다. Passport.js의 다양한 인증 전략을 사용하면 소셜 로그인 인증도 간편하게 구현할 수 있습니다. Express.js와 Passport.js를 함께 사용하여 안전하고 신뢰할 수 있는 웹 애플리케이션을 개발해 보세요.