- プロジェクトのセットアップ: まず、Node.jsとnpmがインストールされていることを確認してください。次に、プロジェクトのディレクトリを作成し、ターミナルでそのディレクトリに移動します。以下のコマンドを使用して、新しいプロジェクトを初期化します。
npm init -y
- 必要なパッケージのインストール: Passport.jsとJWTを使用するために、以下のコマンドを使用して必要なパッケージをインストールします。
npm install passport passport-jwt
- Passport.jsのセットアップ:
Passport.jsを使用するために、次のように
passport.js
という名前の新しいファイルを作成します。
// passport.js
const passport = require('passport');
const passportJWT = require('passport-jwt');
const JWTStrategy = passportJWT.Strategy;
const ExtractJWT = passportJWT.ExtractJwt;
const User = require('./models/User'); // ユーザーモデルのパスに適宜修正
passport.use(new JWTStrategy({
jwtFromRequest: ExtractJWT.fromAuthHeaderAsBearerToken(),
secretOrKey: 'your_secret_key' // 適切なシークレットキーに置き換えてください
},
async (jwtPayload, done) => {
try {
const user = await User.findById(jwtPayload.id); // ユーザーモデルのIDフィールドに適宜修正
if (user) {
return done(null, user);
} else {
return done(null, false);
}
} catch (error) {
return done(error, false);
}
}));
- Express.jsアプリケーションの設定:
Express.jsアプリケーションのエントリーファイル(通常は
app.js
またはindex.js
)で、Passport.jsを設定します。
// app.js または index.js
const express = require('express');
const passport = require('passport');
const app = express();
// ...
app.use(passport.initialize());
// ...
// ルートハンドラーの前に、認証が必要な場合は以下のようにpassport.authenticateを使用します
app.get('/protected-route', passport.authenticate('jwt', { session: false }), (req, res) => {
res.json({ message: '認証が成功しました!' });
});
// ...
app.listen(3000, () => {
console.log('サーバーがポート3000で起動しました。');
});
- ユーザーログインとトークン生成: ユーザーがログインした後、トークンを生成して返すエンドポイントを作成します。
// auth.js
const express = require('express');
const passport = require('passport');
const jwt = require('jsonwebtoken');
const router = express.Router();
router.post('/login', (req, res, next) => {
passport.authenticate('local', { session: false }, (err, user, info) => {
if (err || !user) {
return res.status(400).json({ message: '認証に失敗しました。' });
}
req.login(user, { session: false }, (err) => {
if (err) {
res.send(err);
}
const token = jwt.sign({ id: user.id }, 'your_secret_key'); // 適切なシークレットキーに置き換えてください
return res.json({ token });
});
})(req, res, next);
});
内容としては、以下の手順を説明します:
- プロジェクトのセットアップ
- 必要なパッケージのインストール
- Passport.jsのセットアップ
- Express.jsアプリケーションの設定
- ユーザーログインとトークン生成
それぞれの手順で必要なコード例を提供し、認証の設定と実装方法を分かりやすく説明します。