JWT の紹介JWTとは正式名称は { 「名前」:「張三」、 「役割」: 「管理者」、 「有効期限」: 「2018年7月1日 00:00」 } JWT が必要な理由は何ですか?まず、 1. ユーザーはユーザー名とパスワードをサーバーに送信します。 2. サーバー検証に合格すると、ユーザーロール、ログイン時間などの関連データが現在の 3. サーバーはユーザーに 4. ユーザーによる後続の各リクエストでは、 5. サーバーは しかし、ここで大きな問題があります。サーバー クラスターの場合、セッション データの共有が必要になり、各サーバーがセッションを読み取ることができます。この実装のコストは比較的高くなります。 JWT データ構造
{ "アルゴリズム": "HS256", "タイプ": "JWT" }
もちろん、プライベートフィールドをカスタマイズすることもできます。 ただし、JWT はデフォルトでは暗号化されておらず、誰でも読み取ることができるため、この部分には秘密情報を入れないでください。 HMACSHA256 base64UrlEncode(ヘッダー) + "." + base64UrlEncode(ペイロード)、 秘密) 署名を計算した後、 JWTのセキュリティ
Node の簡単なデモ - Koa JWT の実装理論的な知識について説明した後、 まず、ユーザーがログインすると、サーバーはユーザー情報に基づいて ここでは jsonwebtoken は、 Koa-jwtミドルウェアは、主に koaプロジェクトを素早く構築する現時点では、 インストール npm をインストール -g koa-generator プロジェクトを開始する トークンを生成するデモンストレーションの便宜上、実際にはデータベースに保存されるユーザー情報を格納するための変数 const crypto = require("crypto"), jwt = require("jsonwebtoken"); // TODO: データベースを使用する // これはデータベースに保存する必要がありますが、これはデモンストレーション用です let userList = []; クラスUserController { // ユーザーログイン static async login(ctx) { const データ = ctx.request.body; if (!data.name || !data.password) { ctx.body = {を返します コード: "000002", メッセージ: 「無効なパラメータ」 } } const result = userList.find(item => item.name === data.name && item.password === crypto.createHash('md5').update(data.password).digest('hex')) if (結果) { const トークン = jwt.sign( { 名前: 結果.名前 }, "Gopal_token", // シークレット { expiresIn: 60 * 60 } // 60 * 60 秒 ); ctx.body = {を返します コード: "0", メッセージ: 「ログイン成功」、 データ: { トークン } }; } それ以外 { ctx.body = {を返します コード: "000002", メッセージ: 「ユーザー名またはパスワードが正しくありません」 }; } } } モジュールをエクスポートします。 クライアントがトークンを取得するフロントエンドがログインして ログイン() { これ.$axios .post("/api/ログイン", { ...このルールフォーム、 }) .then(res => { (res.code === "0"の場合){ this.$message.success('ログインに成功しました'); localStorage.setItem("トークン", res.data.token); this.$router.push("/"); } それ以外 { this.$message(res.message); } }); } // axios リクエストインターセプターはリクエストデータを処理します axios.interceptors.request.use(config => { const トークン = localStorage.getItem('トークン'); config.headers.common['Authorization'] = 'Bearer ' + token; // ここで Authorization に注意してください 設定を返します。 }) トークンを確認する検証に // エラー処理 app.use((ctx, next) => { 戻り値 next().catch((err) => { (エラーステータス === 401)の場合{ ctx.ステータス = 401; ctx.body = '保護されたリソース。アクセスするには Authorization ヘッダーを使用します\n'; }それ以外{ エラーをスローします。 } }) }) // 注: ルートの前に配置します app.use(koajwt({ シークレット: 'Gopal_token' }).unless({ // ホワイトリストのパスを設定する: [/\/api\/register/, /\/api\/login/] })) // ルート app.use(index.routes(), index.allowedMethods()) app.use(users.routes()、users.allowedMethods()) を使用します 以下の点に注意することが重要です。
デモログインが必要なインターフェースに直接アクセスすると、 最初に登録してからログインしてください。そうしないと、ユーザー名またはパスワードが間違っているというメッセージが表示されます。 ログイン後、 要約するこの記事では、 記事が長くなったので、比較的簡単な この記事の 参照するJSON Web Token 入門チュートリアル Node.js アプリケーション: Koa2 は認証に JWT を使用します Node で koa2 を使用して簡単な JWT 認証方式を実装する方法についての記事はこれで終わりです。Node koa2 JWT 認証に関するより関連性の高いコンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
<<: Trash-Cli: Linux のコマンドラインごみ箱ツール
>>: Windows 10 での MySQL 5.7.17 のインストールと設定方法のグラフィック チュートリアル
My97DatePicker は非常に柔軟で使いやすい日付コントロールです。使い方はとても簡単です。...
これがないと、ブラウザはページをレンダリングするときに Quirks モードを使用することがわかって...
CentOS6.9はMysql5.7をインストールします。参考までに、詳細は次のとおりです。 1. ...
3次元縦棒グラフは、正面、右側、上部の3つの部分で構成されています。描画するときは、正面をグラフィッ...
操作効果コードの実装html <div id="ウォッチ"> <...
フロントエンドのクロスドメイン問題に2日間近く悩まされましたが、ようやくngnxを使って解決したので...
Linuxアラーム機能の紹介上記のコード: #include <stdio.h> #in...
目次チュートリアルシリーズ1. MySQL アーキテクチャクエリキャッシュキャッシュされないクエリ:...
目次1. コンセプトメモリ管理モード住所種別分類例: 2. ページ管理x86 アーキテクチャ 32 ...
序文JSON は、言語に依存しないテキスト形式を使用する軽量のデータ交換形式で、XML に似ています...
Linux は iftop を使用してネットワーク カードのトラフィックをリアルタイムで監視します。...
1. インストール前の準備1. 公式ウェブサイトからUbuntu 20.04のイメージファイルを直接...
適切に機能するテーブル プロパティ設定:コードをコピーコードは次のとおりです。 <テーブル セ...
目次序文1. カプセル化の重要性2. どのようにカプセル化しますか? 1. 準備2. 梱包を開始する...
説明: 指定された時間内に前のノードのコンテンツを置き換えるタイマーを設定します。 1. キーコード...