Nodejs jwtとは何ですか
nodejs では、jwt の正式名は Json Web トークンです。これは、ネットワーク アプリケーション環境間でステートメントを転送するために実装された JSON に基づくオープン標準です。 JWT クレームは通常、リソース サーバーからリソースを取得するために、アイデンティティ プロバイダーとサービス プロバイダーの間で認証されたユーザー ID 情報を渡すために使用されます。
nodejs の JWT とは
Json Web トークン (JWT) は、ネットワーク アプリケーション環境間でクレームを転送するために使用される実行のタイプです。 JSON オープン スタンダード (RFC 7519) に基づいています。トークンはコンパクトかつ安全になるように設計されており、分散サイトでのシングル サインオン (SSO) シナリオに特に適しています。JWT クレームは通常、認証されたユーザー ID 情報は、リソース サーバーからリソースを取得するために、アイデンティティ プロバイダーとサービス プロバイダーの間で渡されます。他のビジネス ロジックに必要な追加の宣言情報も追加できます。トークンは、認証に直接使用することもできます。JWT は、HTTP 通信中に ID 認証を実行します。
HTTP 通信はステートレスであることがわかっているため、クライアントのリクエストはサーバーが処理された後、元のクライアントに返すことはできません。したがって、アクセスされたクライアントを識別する必要があります。一般的な方法は、セッション メカニズムを使用することです。クライアントがサーバーに正常にログインした後、サーバーはセッション ID を生成し、クライアントに返します。クライアントはセッション ID を Cookie に保存します。再度リクエストを行うと、Cookie 内のセッション ID がサーバーに送信されます。サーバーはセッションをキャッシュします。クライアント リクエストが来ると、サーバーはどのユーザーのリクエストであるかを認識します。 上記の分析により、セッションには次の問題があることがわかります:1. セッションは次の場所に保存されます。サーバー側では、顧客の訪問数が増加すると、サーバーは多数のセッションを保存する必要があり、これはサーバーにとって大きなテストになります; 2. サーバーがクラスターの場合、ユーザーいずれかのサーバーにログインすると、サーバーはセッションがサーバーのメモリに保存されますが、ユーザーが他のサーバーにアクセスするとアクセスできなくなります。通常、共有できるようにするためにキャッシュ整合性テクノロジが使用されます。
Json Web トークンはどのように作成されますか?
1. セッションの保存にはサードパーティのキャッシュが使用されますが、これは不便です。クライアントはユーザー名とパスワードを使用してサーバーにログインします; 2. サーバーはクライアントの身元が確認されます; 3. サーバーはユーザーのトークンを生成し、それをサーバーに返しますclient; 4. クライアントはトークンをローカル ブラウザに、通常は Cookie に保存します ;5. クライアントがリクエストを開始するとき、トークンを運ぶ必要があります;6. サーバーはリクエストを受信すると、まずトークンを検証してからデータを返します。サーバー トークンを保存する必要はなく、トークンに含まれる情報のみを検証する必要があります。 ; ユーザー情報が確認できる限り、クライアントがバックグラウンドでどのサーバーにアクセスしても問題ありません。
Json Web トークンとはどのようなものですか?
名前から、これが json であることがわかります。 は 3 つの部分で構成されます: Header (ヘッダー)、通常はデフォルトのものを使用しますが、ほとんど変更はありません:{ ‘typ’:‘JWT’, ‘alg’:‘HS256’ }
{ ‘iss’:‘签发者’, ‘sub’:‘面向的用户’, ‘aud’:‘接收方’, ‘exp’: 过期时间, ‘iat’: 创建时间, ‘nbf’: 在什么时间之前,该Token不可用, ‘jti’:‘Token唯一标识’ }
トークン = ヘッダー (base64) ペイロード (base64) 署名;
実装プロセス
–> ユーザーがログインすると、サーバーはトークン (暗号化された文字列) を生成し、フロントエンドに送信します。トークンを保存します (任意の場所に保存します) どちら) –> フロントエンドがデータ要求を開始すると、トークン –> サーバーはトークンが合法、合法であれば操作を続行、違法であれば操作を終了 トークンの使用シナリオ: ステートレス リクエスト、ユーザー ログイン ステータスの維持、サードパーティ ログイン (トークン認証 2.0)サポートアルゴリズム## 开发时使用 安装 使用alg参数值 数字签名或MAC算法 HS256 使用SHA-256哈希算法的HMAC HS384 使用SHA-384哈希算法的HMAC HS512 使用SHA-512哈希算法的HMAC RS256 使用SHA-256哈希算法的RSASSA-PKCS1-v1_5 RS384 使用SHA-384哈希算法的RSASSA-PKCS1-v1_5 RS512 使用SHA-512哈希算法的RSASSA-PKCS1-v1_5 PS256 使用SHA-256哈希算法的RSASSA-PSS(仅节点^ 6.12.0 OR> = 8.0.0) PS384 使用SHA-384哈希算法的RSASSA-PSS(仅节点^ 6.12.0 OR> = 8.0.0) PS512 使用SHA-512哈希算法的RSASSA-PSS(仅节点^ 6.12.0 OR> = 8.0.0) ES256 使用P-256曲线和SHA-256哈希算法的ECDSA ES384 使用P-384曲线和SHA-384哈希算法的ECDSA ES512 使用P-521曲线和SHA-512哈希算法的ECDSA 没有 不包含数字签名或MAC值 npm install jsonwebtoken --save
const jwt = require('jsonwebtoken');//加载包
//产生token默认算法hs256
let token=jwt.sign({user:'123'},'123114655sad46aa');//此方法接收两个参数,第一个是要加密保存的数据(一个对象,不要放隐秘性的数据,如密码),第二个是要加密的私钥(一个字符串,越乱越好)
console.log(token);//返回一个加密字符串
// 服务器签发的token
//eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyIjoiMTIzIiwiaWF0IjoxNTcwMDc2NjU5fQ.3FT6v8zVptdWGBILD1m1CRY6sCP1I3E947krUh_E3
//客户端请求数据的时候验证token
//客户端传递过来的token
let tokens=token;
jwt.verify(tokens,'123114655sad46aa',function (err,data) {
//verify接收两个参数,第一个参数是客户端传递过来的token,第二个参数是加密时的私钥;第三个参数是回调函数
console.log(err);//签名通过返回null,签名不通过返回err(JsonWebTokenError: invalid signature)
console.log(data);// 通过返回解密数据,失败返回unfinished
});
更多node相关知识,请访问:nodejs 教程!!
以上がNodejs jwtとは何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

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

ホットトピック











Node.js は、高いパフォーマンス、スケーラビリティ、クロスプラットフォーム サポート、豊富なエコシステム、開発の容易さなどの機能を備えているため、バックエンド フレームワークとして使用できます。

MySQL データベースに接続するには、次の手順に従う必要があります。 mysql2 ドライバーをインストールします。 mysql2.createConnection() を使用して、ホスト アドレス、ポート、ユーザー名、パスワード、データベース名を含む接続オブジェクトを作成します。 connection.query() を使用してクエリを実行します。最後に connection.end() を使用して接続を終了します。

Node.js には次のグローバル変数が存在します。 グローバル オブジェクト: グローバル コア モジュール: プロセス、コンソール、require ランタイム環境変数: __dirname、__filename、__line、__column 定数: unknown、null、NaN、Infinity、-Infinity

Node.js インストール ディレクトリには、npm と npm.cmd という 2 つの npm 関連ファイルがあります。違いは次のとおりです。拡張子が異なります。npm は実行可能ファイルで、npm.cmd はコマンド ウィンドウのショートカットです。 Windows ユーザー: npm.cmd はコマンド プロンプトから使用できますが、npm はコマンド ラインからのみ実行できます。互換性: npm.cmd は Windows システムに固有ですが、npm はクロスプラットフォームで使用できます。使用上の推奨事項: Windows ユーザーは npm.cmd を使用し、他のオペレーティング システムは npm を使用します。

Node.js と Java の主な違いは、設計と機能です。 イベント駆動型とスレッド駆動型: Node.js はイベント駆動型で、Java はスレッド駆動型です。シングルスレッドとマルチスレッド: Node.js はシングルスレッドのイベント ループを使用し、Java はマルチスレッド アーキテクチャを使用します。ランタイム環境: Node.js は V8 JavaScript エンジン上で実行され、Java は JVM 上で実行されます。構文: Node.js は JavaScript 構文を使用し、Java は Java 構文を使用します。目的: Node.js は I/O 集中型のタスクに適しており、Java は大規模なエンタープライズ アプリケーションに適しています。

はい、Node.js はバックエンド開発言語です。これは、サーバー側のビジネス ロジックの処理、データベース接続の管理、API の提供などのバックエンド開発に使用されます。

Web 開発において Node.js と Java にはそれぞれ長所と短所があり、どちらを選択するかはプロジェクトの要件によって異なります。 Node.js はリアルタイム アプリケーション、迅速な開発、マイクロサービス アーキテクチャに優れており、Java はエンタープライズ グレードのサポート、パフォーマンス、セキュリティに優れています。

Node.js プロジェクトのサーバー デプロイメント手順: デプロイメント環境を準備します。サーバー アクセスの取得、Node.js のインストール、Git リポジトリのセットアップ。アプリケーションをビルドする: npm run build を使用して、デプロイ可能なコードと依存関係を生成します。コードをサーバーにアップロードします: Git またはファイル転送プロトコル経由。依存関係をインストールする: サーバーに SSH で接続し、npm install を使用してアプリケーションの依存関係をインストールします。アプリケーションを開始します。node Index.js などのコマンドを使用してアプリケーションを開始するか、pm2 などのプロセス マネージャーを使用します。リバース プロキシの構成 (オプション): Nginx や Apache などのリバース プロキシを使用して、トラフィックをアプリケーションにルーティングします。
