[javascript] Express.js에서의 미들웨어 인증 방법

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에 전달하고, usernamepassword를 검증하는 로직을 작성합니다. 검증이 성공하면 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를 함께 사용하여 안전하고 신뢰할 수 있는 웹 애플리케이션을 개발해 보세요.