Node.jsを使用したログイン処理の方法

公開日: 2023/6/8

今回はNode.jsを使用したログイン処理について学習していこうと思います。

Webアプリケーションを作成する際に、ログイン処理は多用する事になると思うので学んでおいて損は無いと思います。

1. Node.jsについて簡単に説明


まず最初に、Node.jsとは何かを説明します。

Node.jsは、JavaScriptを用いてサーバーサイドのプログラミングを行うためのプラットフォームです。

Node.jsは、非同期I/O処理をサポートすることができ、高速なアプリケーション開発が可能です。

2. Node.jsを使用したログイン処理について

Node.jsを使用してログイン処理を行う場合の一般的な流れを紹介します。

1.ユーザーがログインフォームにIDとパスワードを入力する。

2.サーバーは、ユーザーの入力したIDとパスワードを検証する。

3.もし認証が成功した場合、サーバーはセッションIDを発行する。

4.サーバーは、発行されたセッションIDをクライアントに返す。

5.クライアントは、セッションIDをクッキーなどに保存する。

6.以降のアクセスにおいて、クライアントはセッションIDを送信することで、サーバーは認証済みであることを確認する。

3. 具体的な実装例


Node.jsを使用したログイン処理の実装例を紹介します。

まず、ExpressというNode.jsのフレームワークを使用して、サーバーを実装します。

const express = require('express');
const app = express();

app.get('/', (req, res) => {
  res.send('Hello World!');
});

app.listen(3000, () => {
  console.log('Example app listening on port 3000!');
});

次にログインフォームを作成します。

<form action="/login" method="post">
  <label for="id">ID:</label>
  <input type="text" id="id" name="id"><br>
  <label for="password">Password:</label>
  <input type="password" id="password" name="password"><br>
  <input type="submit" value="Submit">
</form>

次にログイン処理を実装します。ここでは、ユーザーのIDとパスワードがハードコードされている例を紹介します。

app.post('/login', (req, res) => {
  const id = req.body.id;
  const password = req.body.password;

  if (id === 'user' && password === 'password') {
    req.session.userId = id;
    res.redirect('/dashboard');
  } else {
    res.send('Invalid ID or password');
  }
});

ログインフォームでPOSTリクエストが送信されると、サーバー側ではapp.post('/login', ...)によって登録された処理が実行されます。

ここでは、ユーザーが入力したIDとパスワードを検証しています。

もし認証が成功した場合、サーバーはreq.session.userIdにユーザーIDを設定し、/dashboardへのリダイレクトを行います。認証に失敗した場合は、Invalid ID or passwordというエラーメッセージを返します。

最後に、認証済みのユーザーしかアクセスできないページであるダッシュボードを実装します。ここでは、req.session.userIdが設定されている場合にのみアクセスを許可します。

app.get('/dashboard', (req, res) => {
  const userId = req.session.userId;
  if (!userId) {
    res.redirect('/login');
  } else {
    res.send(`Welcome, ${userId}!`);
  }
});

ダッシュボードにアクセスするために、/dashboardにGETリクエストが送信されると、サーバー側ではapp.get('/dashboard', ...)によって登録

4. まとめ

今回は、Node.jsを使用したログイン処理について解説しました。

ログイン処理の流れや具体的な実装例を紹介しました。

Node.jsを使用したログイン処理を実装することで、セキュアで高速なアプリケーションを開発することができます。

是非、実際に手を動かして試してみてください!