ホームページ  >  記事  >  ウェブフロントエンド  >  nodejsはリクエストセッションを取得します

nodejsはリクエストセッションを取得します

WBOY
WBOYオリジナル
2023-05-11 14:45:37819ブラウズ

Node.js は、高速、クロスプラットフォーム、モジュール式のサーバーサイド JavaScript ランタイム環境であり、効率的で安定したサーバーサイド アプリケーションを構築できます。 Webアプリケーションを開発する際にはSESSIONを利用することになりますが、Node.jsでリクエストのSESSION情報を取得するにはどうすればよいでしょうか?この記事では、SESSIONの概念、Node.jsのSessionに対応するモジュール、具体的なAPI情報などから、リクエストSESSIONの取得方法を紹介します。

1. SESSION の概念

SESSION は、ユーザー情報と操作を保存するために使用されるクロスリクエスト メカニズムです。SESSION 変数を保存することで、ユーザーは、セッションの別のページにアクセスしてもログインしたままにすることができます。ウェブサイトの状態を示し、異なるページ間でデータを渡します。 SESSION は、サーバー側の状態保持メソッドであり、各セッションに一意の ID を割り当て、その ID をクライアント (通常はクライアントの Cookie 内) に保存して、サーバーとクライアント間の通信と通信を実現します。新しいセッションごとに、追跡用に新しい ID が作成されます。

Web 開発では、SESSION を使用して、セキュリティの最適化、ユーザー エクスペリエンスの向上、ユーザー固有のニーズの実現などを行うことができます。

2. Node.js でのセッションの使用

Node.js には、Express アプリケーションにセッション サポートを追加できる、一般的に使用される SESSION モジュールの Express-session があります。

1. Express-session モジュールをインストールします。

コマンド ラインに次のコマンドを入力します:

npm install express-session

2. Express を導入します。 - プロジェクト セッションに:

プロジェクトに次のコードを追加します:

var express = require('express');
var session = require('express-session');
var app = express();

3. Express-session ミドルウェアを使用します

プロジェクトに次のコードを追加します。

app.use(session({
secret: 'keyboard cat',//secret的值建议使用随机字符串
cookie: { maxAge: 60000 },
resave: true,
saveUninitialized: true
}))

その内:

  • secret はセッション ID の暗号化に使用されるキーで、任意に設定できます
  • Cookie の maxAge は有効期間ですセッション ID
  • を定義する
  • resave:true は、セッションが変更されたかどうかに関係なく、リクエストごとに再保存されることを意味します。
  • saveUninitialized:true は、ユーザーがログインしていないことを意味し、セッションと Cookie はリクエストごとにリセットされます

4. SESSION

を設定して取得します。プロジェクトでは、次のコードを通じて SESSION を設定および取得できます。

設定:

req.session.userName="tom";

取得:

var userName = req.session.userName;

次に、例を使用して SESSION リクエストを取得する方法を説明します。 Node.js の情報。

3. 特定の API 情報

リクエスト SESSION 情報の取得方法をより深く理解するために、まず Node.js の SESSION に対応する API を理解しましょう。

req.session

req.sessionを記述することで対話制御を実現できるsessionのリクエストミドルウェアです。使用例は次のとおりです。

req.session.userName='xiaoming';

上記のコードは、セッションへの userName の追加を実装します。 Express では、会話情報はセッションに保存されます。セッションは、通常の JavaScript オブジェクトと同様に操作できるオブジェクトです。

req.session.destroy

この属性は、ユーザーが終了すると、セッションに保存されたデータがクリアされることを示します。使用例は次のとおりです。

req.session.destroy(function(err) {
  // cannot access session here
})

セッションが破棄されると、コールバック関数が実行されます。

4. デモの例

次に、例を使用してリクエスト SESSION 情報を取得する方法を示します。

1. プロジェクトの作成

まず、プロジェクトを初期化し、main.js ファイルを作成します:

mkdir node-app && cd node-app
npm init
touch main.js

2. Express と Express-session をインストールし、

を導入します

コマンド ラインに次のコマンドを入力して、express と Express-session をインストールし、インポートします。

npm install express --save
npm install express-session --save

main.js に次のコードを記述します。

const express = require('express')
const session = require('express-session')

const app = express()

app.use(session({
  secret: 'keyboard cat',//secret的值建议使用随机字符串
  cookie: { maxAge: 60000 },
  resave: true,
  saveUninitialized: true
}))

app.get('/login', (req, res) => {
  req.session.userName = 'Qiming'
  res.send('login success')
})

app.get('/home', (req, res) => {
  let userName = req.session.userName
  if (userName) {
    res.send(`welcome ${userName}`)
  } else {
    res.send('please login first')
  }
})

const server = app.listen(3000, () => {
  console.log(`app is running at http://localhost:${server.address().port}`)
})

上記のコード内:

  • 最初に、express モジュールと Express-session モジュールを紹介します。
  • アプリケーション アプリ オブジェクトを作成し、途中にセッション ミドルウェアを追加します。
  • アクセス/ログイン時に、ユーザーを保存しますreq.session の名前 .userName
  • /home にアクセスするとき、req.session から userName を取得しようとします。存在する場合は、ようこそとメッセージを表示します。存在しない場合は、最初にログインするようユーザーに求めます
  • アプリケーションの起動時に 3000 でリッスンし、ポート上で起動ログ情報を出力します
3. プロジェクトを実行してテスト

##ターミナルで次のコマンドを実行します:

node main.js

ブラウザを開いて http://localhost:3000/login にアクセスすると、「ログイン成功」メッセージが表示され、http://localhost:3000/home にアクセスすると、「welcome Qiming」メッセージが表示されます。 SESSION が正常に取得されました。

5. 概要

この記事では、SESSION の概念、Node.js での SESSION の使用法、特定の API 情報、およびデモンストレーションの例について学習し、皆様の向上に役立つことを願っています。 Node.js でリクエスト SESSION 情報を取得する方法を学びます。実際のプロジェクトでは、SESSION の使用方法を実際の状況に応じて決定する必要があり、ビジネス ニーズに応じて実装できます。

以上がnodejsはリクエストセッションを取得しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。