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. 分離マーカーを追加します。 ip netns add fd 2. 指定されたネットワーク カ...
序文このコントロールを直接印刷すると下部に透かしが入りますが、公式 Web サイトから購入することで...
vue+element UI は Excel データをエクスポートするためのパブリック関数をカプセル...
Server 2016 のリモート デスクトップ接続のデフォルト数は 2 ユーザーです。2 人以上...
1. SSHリモート管理SSH の定義SSH (Secure Shell) は、主にキャラクタ イン...
カスケードとカスケードレベルHTML 要素は 3 次元の概念です。水平方向と垂直方向に加えて、「Z ...
1. MySQL Community Server 5.6.35をダウンロードするダウンロードアドレ...
最初にコード、次にテキストコードをコピーコードは次のとおりです。 <!DOCTYPE html...
セクションコース内容営業時間1 ウェブデザインの概要2 2 HTML 基本タグとフォーマットタグ 2...
MySQL のデータ量が多い場合、制限ページングが使用されます。ページ数が増えると、クエリの効率が低...
目次1. コンポーネント2. キープアライブ2.1 問題点2.2 キープアライブを使って解決する2....
Nextcloud は、オープンソースで無料のプライベート クラウド ストレージ ネットワーク ディ...
1いくつかの一般的な文字セットMySQL で最も一般的な文字セットには、ASCII 文字セット、ラテ...
目次ソリューション分析スライス履歴書のダウンロード具体的な解決プロセス論理的分析フロントエンドサーバ...