検索

Node.js は非常に人気のあるサーバーサイド JavaScript プログラミング言語であり、Web 開発アプリケーションで重要な役割を果たします。完全な Web アプリケーションを実装するには、さまざまなテクノロジとツールを使用する必要があります。その中の非常に重要な機能の 1 つがユーザー ログイン システムです。

この記事では、Node.js がログイン機能を実装する方法を紹介します。ユーザー ログイン フォーム ページの構築方法、ユーザーが入力した情報の検証方法、ユーザー セッションの作成方法、Web アプリケーションでのユーザー セッションの使用方法について詳しく説明します。

1. ユーザー ログイン フォームを構築する
まず、ユーザーが Web アプリケーションにログインできるようにするには、まずユーザー ログイン フォームを構築する必要があります。ここでは、HTML と CSS を使用して、シンプルで美しいログイン フォーム ページを構築できます。コードは次のとおりです:

<!DOCTYPE html>
<html>
<head>
  <title>用户登录</title>
  <style>
    body {
      font-family: Arial, sans-serif;
    }
    label {
      display: block;
      margin-bottom: 10px;
    }
    input {
      border: 1px solid #ccc;
      padding: 5px;
    }
    button {
      background-color: #4CAF50;
      color: white;
      border: none;
      cursor: pointer;
      padding: 10px 20px;
      margin-top: 10px;
    }
  </style>
</head>
<body>
  <h1 id="用户登录">用户登录</h1>
  <form method="POST" action="/login">
    <div>
      <label for="username">用户名</label>
      <input type="text" id="username" name="username" placeholder="请输入用户名">
    </div>
    <div>
      <label for="password">密码</label>
      <input type="password" id="password" name="password" placeholder="请输入密码">
    </div>
    <button type="submit">登录</button>
  </form>
</body>
</html>

このコードは、いくつかの基本的な HTML と CSS スタイルを使用して、ユーザー名と Two を含むシンプルなログイン フォームを作成しますパスワードの入力ボックスと、フォームの下部に「ログイン」ボタンが追加されました。

2. ユーザーが入力した情報を確認する
ユーザーがログイン フォームを送信した後、ユーザーが入力したユーザー名とパスワードが正しいかどうかを確認する必要があります。ここでは、Node.js の Express フレームワークを使用してフォーム データを取得および検証できます。以下は、ログイン フォームから POST リクエストを受信し、送信されたユーザー名とパスワードを検証する単純な Express ルーティング処理関数です。

const express = require('express');
const bodyParser = require('body-parser');

const app = express();
app.use(bodyParser.urlencoded({ extended: false }));

app.post('/login', (req, res) => {
  const username = req.body.username;
  const password = req.body.password;
  // 进行验证
  if (username === 'admin' && password === '123456') {
    // 登录成功,创建会话
    req.session.user = username;
    res.redirect('/dashboard');
  } else {
    // 登录失败,显示错误信息
    res.render('login', { error: '用户名或密码错误' });
  }
});

このコードは、Express ミドルウェアのボディ パーサーを使用してフォーム データを解析し、 req.body オブジェクトを通じて送信されたユーザー名とパスワード。次に、ユーザー名とパスワードの検証を行い、検証に合格すると、ユーザーセッション(詳細は後述するサーバー側にユーザ​​ー情報を保存する方法)を作成することができ、ユーザーはアプリケーションのメインページにリダイレクトされます。

検証が失敗した場合は、Express のテンプレート エンジンを使用してエラー メッセージ ページをレンダリングし、エラー メッセージをテンプレートに渡すことができます。コードは次のとおりです:

app.set('view engine', 'ejs');

app.get('/login', (req, res) => {
  res.render('login', { error: null });
});

app.post('/login', (req, res) => {
  const username = req.body.username;
  const password = req.body.password;
  // 进行验证
  if (username === 'admin' && password === '123456') {
    // 登录成功,创建会话
    req.session.user = username;
    res.redirect('/dashboard');
  } else {
    // 登录失败,显示错误信息
    res.render('login', { error: '用户名或密码错误' });
  }
});

ここでは使用します。 Express ページで ejs テンプレート エンジンを使用して、ログイン ページとエラー メッセージ ページをレンダリングします。ページのレンダリング時にエラー メッセージをテンプレートに渡す必要があることに注意してください。

3. ユーザー セッションの作成
上記のコードでは、ユーザー セッションの作成 (つまり、ユーザー情報の保存方法) について説明しました。 Node.js では、express-session モジュールを使用してユーザー セッションを作成および管理できます。 Express-session モジュールのインストールと使用は非常に簡単で、次のコードをアプリケーションに追加するだけです:

const session = require('express-session');
app.use(session({
  secret: 'my-secret-key',
  resave: false,
  saveUninitialized: false
}));

このコードは、express-session モジュールを使用してセッション ミドルウェアを作成し、暗号化するキー (シークレット) を設定します。セッションデータ。このモジュールには、セッションの永続設定を構成するための resave および saveUninitialized オプションなど、他のオプションも提供されています。ここでは、デフォルト設定を使用するために両方を false に設定します。

ユーザーがログインに成功したら、サーバー側でセッションを作成し、そのセッションにユーザー情報を保存します。コードは次のとおりです:

req.session.user = username;

このようにして、ユーザーがログインすると、正常に実行されると、セッション データはサーバー側に保存され、ユーザーはこのセッションを使用して次の Web アプリケーションで操作を実行できます。

4. Web アプリケーションでのユーザー セッションの使用
ユーザー セッションを作成したら、それを Web アプリケーションで使用して、ユーザー認証や操作認可などの機能を実装する必要があります。 Express はセッション データにアクセスするための req.session オブジェクトを提供しており、このオブジェクトを使用して関連関数を実装できます。

たとえば、ユーザーがログインが必要なページにアクセスしたとき、現在のユーザーがセッションを持っているかどうかを確認することで、そのユーザーがすでにログインしているかどうかを判断できます。セッションを持っていない場合は、ログイン ページにリダイレクトします。コード

app.get('/dashboard', (req, res) => {
  if (!req.session.user) {
    res.redirect('/login');
    return;
  }
  // 用户已登录,渲染页面
  res.render('dashboard');
});

ここでは、req.session オブジェクトにユーザー情報があるかどうかを確認します。存在する場合は、ダッシュボード ページが表示されます。存在しない場合は、ログイン ページにリダイレクトされます。

さらに、ユーザー セッションを使用して、ユーザー認証が必要な操作を承認することもできます。例:

app.post('/delete', (req, res) => {
  if (!req.session.user) {
    res.sendStatus(401);
    return;
  }
  // 检查用户权限
  if (req.session.user !== 'admin') {
    res.sendStatus(403);
    return;
  }
  // 执行删除操作
  res.send('删除成功');
});

このコードでは、現在のセッションにユーザー情報が含まれているかどうかを確認します。含まれていない場合は、 401 ステータス コードが返され、次に現在のユーザーの権限を確認し、ユーザーが管理者でない場合は 403 ステータス コードが返され、最後に削除操作を実行して成功の応答を返します。

結論
この記事の導入部を通じて、Node.js がユーザー ログイン機能を実装する方法をすでに理解しました。ログイン フォームの作成、ユーザー情報の検証、ユーザー セッションの作成、Web アプリケーションでユーザー セッションを使用して認証および認可機能を実装する方法を学習しました。もちろん、ユーザー ログイン機能の実装には他にも多くの詳細とテクノロジが含まれますが、これらは参考のためにのみ提供します。もっと良い実装方法がある場合は、共有してください。

以上がNodejsでログインを実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
Reactのエコシステムのサイズ:複雑な風景をナビゲートしますReactのエコシステムのサイズ:複雑な風景をナビゲートしますApr 28, 2025 am 12:21 AM

tonavigatereAct'somplexEcosystemively、理解を理解し、認識していることを認識していることを認識しているandweakness、およびIntegreatemtoemtoemtoemtemtemtemtemtemtemtemtemtemtemtemtemtemtemtemtemtemtemtemtemtemtemtemtemtemtemtemtemtemotereconceptate、その後、勾配内で測定する

どのようにReactがキーを使用してリスト項目を効率的に識別しますどのようにReactがキーを使用してリスト項目を効率的に識別しますApr 28, 2025 am 12:20 AM

RactuseSeSeSeSeSeSeSeSpiffictifideidifiedItemsbyprovidingastableidentitytoeeedelement.1)keysallowReactTotTotTotTotTotTotTotTotTotTotTotTotTotTotTotRACKESOUTRE-RENDERINGTHEENTERELIST.2)chookiniqueandstablekeys、avolididingArrayIndi​​ces.3)reforceAsificlySificlySiflovedobrovesiondanc

Reactにおける重要な問題のデバッグ:問題の特定と解決Reactにおける重要な問題のデバッグ:問題の特定と解決Apr 28, 2025 am 12:17 AM

KeysinReactarecrucialforoptimizingTherenderingProcessandDynamicListseffective.tospotandfixkey-relatedissues:1)adduniquekeystolistiTemstoavoidsissusisus、2)useuniqueidideididifiersfromdateadceSofofordiceys、3)

Reactの一方向データバインディング:予測可能なデータフローの確保Reactの一方向データバインディング:予測可能なデータフローの確保Apr 28, 2025 am 12:05 AM

Reactの一元配置データバインディングにより、データが親コンポーネントから子コンポーネントに流れることが保証されます。 1)データは単一に流れ、親コンポーネントの状態の変化は子コンポーネントに渡すことができますが、子コンポーネントは親コンポーネントの状態に直接影響することはできません。 2)この方法により、データフローの予測可能性が向上し、デバッグとテストが簡素化されます。 3)制御されたコンポーネントとコンテキストを使用することにより、一方向のデータストリームを維持しながら、ユーザーの相互作用とコンポーネント間通信を処理できます。

Reactコンポーネントでキーを選択して管理するためのベストプラクティスReactコンポーネントでキーを選択して管理するためのベストプラクティスApr 28, 2025 am 12:01 AM

keysinReactarecrucialforeffiencedomupdatessandRecOnciliation.1)選択可能でユニークな、そして類似のフルキーなど、Itemids.2)fornestedLists、useuniquekeysateachlevel.3)

ReactアプリケーションのuseState()を使用してパフォーマンスを最適化しますReactアプリケーションのuseState()を使用してパフォーマンスを最適化しますApr 27, 2025 am 12:22 AM

useState()uscrucialforoptimizingRectperformanceduetuitsoitsimpactonre-rendersandupdates.tooptimize:1)useusecallbacktomoize funtionsandpreventunnederireRenders.2)

コンテキストとuseState()を使用してコンポーネント間で状態を共有するコンテキストとuseState()を使用してコンポーネント間で状態を共有するApr 27, 2025 am 12:19 AM

コンテキストとユーザーを使用して、大規模なReactアプリケーションで州の管理を簡素化できるため、状態を共有します。 1)プロップドリルを減らす、2)より明確なコード、3)グローバルな状態を管理しやすい。ただし、パフォーマンスのオーバーヘッドと複雑さのデバッグに注意してください。コンテキストと最適化技術の合理的な使用は、アプリケーションの効率と保守性を向上させることができます。

Reactの仮想DOMアップデートに対する誤ったキーの影響Reactの仮想DOMアップデートに対する誤ったキーの影響Apr 27, 2025 am 12:19 AM

誤ったキーを使用すると、Reactアプリケーションでパフォーマンスの問題や予期しない動作を引き起こす可能性があります。 1)キーはリスト項目の一意の識別子であり、Virtual Domを効率的にReactの更新を支援します。 2)同じまたは非ユニークなキーを使用すると、リスト項目が再注文され、コンポーネント状態が失われます。 3)キーとして安定した一意の識別子を使用すると、パフォーマンスを最適化し、完全な再レンダリングを回避できます。 4)ESLINTなどのツールを使用して、キーの正しさを確認します。キーを適切に使用すると、効率的で信頼性の高い反応アプリケーションが保証されます。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

mPDF

mPDF

mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

DVWA

DVWA

Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

VSCode Windows 64 ビットのダウンロード

VSCode Windows 64 ビットのダウンロード

Microsoft によって発売された無料で強力な IDE エディター