Node.jsを使ったアプリケーション開発では、ユーザーのセッション管理や認証がとても大切です。これをしっかり理解することで、安全で使いやすいウェブアプリが作れるようになります。今回は、Node.jsでのセッション管理と認証方法について説明していきます。
セッション管理は、ユーザーがウェブサイトを利用する際の情報を一時的に保存する仕組みです。たとえば、ログインしているユーザーの情報や、カートに入れた商品などを管理します。これにより、ページを移動してもその情報を保持することができます。
Node.jsでセッション管理を行うには、Expressというフレームワークを使うのが一般的です。まず、Expressをインストールしましょう。
npm install express express-session
次に、セッションを設定します。以下は基本的なサンプルコードです。
const express = require('express');
const session = require('express-session');
const app = express();
app.use(session({
secret: 'yourSecretKey', // 秘密鍵
resave: false,
saveUninitialized: true,
cookie: { secure: false } // 開発中はfalse
}));
app.get('/', (req, res) => {
if (req.session.views) {
req.session.views++;
res.send(`あなたはこのページを ${req.session.views} 回見ました`);
} else {
req.session.views = 1;
res.send('初めての訪問です!');
}
});
app.listen(3000, () => {
console.log('サーバーが起動しました。ポート3000でアクセスできます。');
});
セッション管理ができたら、次はユーザーのログイン機能を実装しましょう。簡単なログイン画面と認証ロジックを実装します。
app.use(express.urlencoded({ extended: true }));
app.get('/login', (req, res) => {
res.send(`
`);
});
app.post('/login', (req, res) => {
const { username, password } = req.body;
// 簡単な認証用データ(通常はデータベースを使用します)
const validUsername = 'user';
const validPassword = 'password';
if (username === validUsername && password === validPassword) {
req.session.user = username;
res.send('ログイン成功!');
} else {
res.send('ユーザー名またはパスワードが違います。');
}
});
最後に、ログアウト機能を追加します。ユーザーがログアウトするとき、セッション情報をクリアします。
app.get('/logout', (req, res) => {
req.session.destroy(err => {
if (err) {
return res.send('ログアウトできませんでした。');
}
res.send('ログアウト成功!');
});
});
Node.jsでのセッション管理と認証方法について、基本的な流れを説明しました。セッションを使うことで、ユーザーの情報を簡単に管理できるようになります。