Passport.jsを使用した認証と認可の実装方法


  1. Passport.jsのセットアップ: まず、Passport.jsをプロジェクトにインストールします。コマンドラインで以下のコマンドを実行します:
npm install passport

また、認証に使用するストラテジー(ローカル、OAuth、OpenIDなど)もインストールする必要があります。例えば、ローカルストラテジーを使用する場合は、以下のコマンドを実行します:

npm install passport-local
  1. Passport.jsの初期設定: アプリケーションのエントリーポイントであるJavaScriptファイルで、Passport.jsを初期化し、必要な設定を行います。以下は、Express.jsでの例です:
  1. ルートの保護: 保護したいルートにアクセスする前に、ユーザーが認証されているかどうかを確認する必要があります。以下は、Express.jsでの例です:
app.get('/protected-route', ensureAuthenticated, function(req, res) {
  // 認証されたユーザーのみがアクセスできるルートの処理
});
function ensureAuthenticated(req, res, next) {
  if (req.isAuthenticated()) {
    return next();
  }
  res.redirect('/login');
}
  1. ユーザーの認証: ユーザーの認証は、Passport.jsの認証ストラテジーを使用して行います。以下は、ローカルストラテジーを使用する場合の例です:
app.post('/login', passport.authenticate('local', {
  successRedirect: '/dashboard',
  failureRedirect: '/login',
}));
app.get('/logout', function(req, res) {
  req.logout();
  res.redirect('/');
});
  1. ユーザーの認可: ユーザーが特定のリソースや機能にアクセスできるかどうかを決定するために、Passport.jsの認可ミドルウェアを使用します。以下は、特定のロールを持つユーザーのみがアクセスできるルートの例です:
function ensureAdmin(req, res, next) {
  if (req.isAuthenticated() && req.user.isAdmin) {
    return next();
  }
  res.redirect('/unauthorized');
}
app.get('/admin-route',ensureAdmin, function(req, res) {
  // 管理者のみがアクセスできるルートの処理
});

これらはPassport.jsを使用して認証と認可を実装するための一般的な手順です。ただし、具体的な要件や使用するストラテジーに応じて、さまざまな方法があります。詳細な情報やさらなるコード例については、公式のPassport.jsドキュメントを参照してください。