Node.jsでのセッション管理と認証方法

2024/07/20
x-logoline-logo

Node.jsでのセッション管理と認証方法

2024/07/20
x-logoline-logo
PR

Node.jsを使ったアプリケーション開発では、ユーザーのセッション管理や認証がとても大切です。これをしっかり理解することで、安全で使いやすいウェブアプリが作れるようになります。今回は、Node.jsでのセッション管理と認証方法について説明していきます。

セッション管理とは?

セッション管理は、ユーザーがウェブサイトを利用する際の情報を一時的に保存する仕組みです。たとえば、ログインしているユーザーの情報や、カートに入れた商品などを管理します。これにより、ページを移動してもその情報を保持することができます。

Node.jsでのセッション管理

Expressフレームワークの導入

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でのセッション管理と認証方法について、基本的な流れを説明しました。セッションを使うことで、ユーザーの情報を簡単に管理できるようになります。

この記事はAIを使用して作成されています。
PR