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 のインストールと設定方法のグラフィック チュートリアル
1. 機能: xargs は、stdin 内のスペースまたは改行で区切られたデータをスペースで区切ら...
JSON 文字列を JSON オブジェクトに変換するにはどうすればいいですか? JSON.parse...
最近、JS の正規表現マッチングの落とし穴を発見したのですが、その時はあまりにも奇妙だったので、何か...
HTML Web ページ リスト タグの学習チュートリアル。 HTML ページでは、リストはアウトラ...
メモ帳プログラムは、HTML + CSS + JavaScript の 3 つの主要なフロントエンド...
この記事では、MySQL 5.7.24のインストールと設定のチュートリアルを参考までに紹介します。具...
React プロジェクトで要素フレームワークを使用するのは今回が初めてです。非常に単純な問題に遭遇し...
JS でアニメーションを記述する場合、移動前に相対位置を絶対位置に変換してからアニメーション機能を実...
Keepalived のインストール: cd <keepalived_sourcecode_p...
目次順序1. 集中ルーティング2. ファイルディレクトリ3. CompileRouterを作成する4...
ハードディスクのファイル属性のバッチ表示など、特定の種類のファイルに対してバッチ操作を実行する場合、...
1. Nginx サービス基盤Nginx (エンジン x) は、パフォーマンスの最適化のために特別...
TabIndex は、Tab キーを押して、定義された TabIndex 要素を順番に取得し、各要素...
目次序文考えるライブラリディレクトリの解析とダウンロード使い方ファイルの場所実際の通話質問要約する序...
CSS操作 CS $("").css(名前|プロ|[,値|関数]) 位置$(&q...