目次
redux認証:開始
ホームページ ウェブフロントエンド jsチュートリアル Redux認証:Auth0でアプリケーションを保護します

Redux認証:Auth0でアプリケーションを保護します

Feb 17, 2025 am 09:30 AM

Redux Authentication: Secure Your Application with Auth0

コアポイント

  • Reduxは、特に大規模なアプリケーションの場合、データフローを予測と管理が容易にするための構造化された方法を提供します。
  • auth0はユーザー認証に使用され、複雑なバックエンド設定なしのソーシャルログインやマルチファクター認証などの迅速なセットアップと高度な機能を提供します。
  • JSON Web Tokens(JWT)は、従来のセッションベースの認証プロセスを簡素化するRestful APIに対する安全なステートレス認証に使用されます。
  • このチュートリアルは、Auth0のロックウィジェットを使用してログインプロセスを簡素化し、Reduxミドルウェアを使用してAPI呼び出しを効率的かつ安全に処理します。
  • 保護されたルーティングにより、アプリケーションの一部が認証されたユーザーのみがアクセスできるようになり、セキュリティが強化されます。
  • アプリケーションアーキテクチャには、認証ステータスを処理し、APIからデータを取得するためのReduxアクション、還元剤、およびミドルウェアのセットアップが含まれます。
  • この記事のピアレビューをしてくれたPeleke Sengstackeに感謝します。 SitePointコンテンツを最高の状態にしてくれたすべてのSitePointピアレビュアーに感謝します!
Reduxは、Reactコミュニティやより広い分野でも非常に人気があり、正当な理由があります。これは、Dan Abramovが作成したライブラリで、一方向データストリームを整理し、開発者がタイムトラベルやレコーディング/再生などの強力な開発機能を使用できるようにします。

いいですね。しかし、問題は次のとおりです。より多くのコードを記述する必要があります。ただし、大規模なアプリケーションの維持経験がある場合は、データ処理が制御が困難になり、管理が困難になる可能性があることがわかる場合があります。 Reduxを使用すると、アプリケーションのステータスを常に明確に理解し、データが何をしているのかを正確に知ることができます。 このチュートリアルでは、ユーザーを認証し、リモートAPIを呼び出してデータを取得するReal React Reduxアプリケーションの作成を開始する方法を学びます。私たちのアプリは、ノードバックエンドからスターウォーズジェダイリストを取得して、名前と写真を表示できるようにします。認証のために、auth0を使用して、迅速に起動して実行できるようにします。また、ソーシャルログインやマルチファクター認証などの機能を簡単に取得することもできます。

reduxの基本概念には入りません。したがって、ライブラリに慣れていない場合は、次の優れた入門リソースをご覧ください。

React、Redux、およびImmutable.jsを使用してTo Doアプリケーションを構築する方法

Redux Authentication: Secure Your Application with Auth0 reduxドキュメント

今後のアプリケーションのソースコードは、こちらからダウンロードできます。

    redux認証:開始

    このチュートリアルのReactプロジェクトはES2015で記述されるため、Babelを使用してES5にコンパイルし、Webpackを使用してモジュールバンドルを処理します。ゼロからセットアップする代わりに、ReduxリポジトリのDanの実際のスターターの例から始めましょう。コピーを入手して、依存関係をインストールします。

    npm install
    ログイン後にコピー
    auth0

    を登録します

    私たちが構築しているような単一ページアプリケーションを認証する最良の方法は、JSON Web Tokens(JWT)を使用することです。 JWTは、Restful APIに対してステートレス認証の方法を提供します。これには、セッションとCookieベースの認証よりも多くの利点があります。欠点は、JWT認証ソリューションを自分で書くことはトリッキーでエラーが発生しやすい場合がありますが、幸いなことに、サーバーやセキュリティの実装の詳細を心配することなくAuth0を使用できます。

    まだ行っていない場合は、無料のauth0アカウントにアクセスしてサインアップしてください。無料プランを使用すると、7,000人の通常のアクティブユーザーと2つのソーシャルアイデンティティプロバイダーを利用できます。

    登録した後、プロンプトに従ってアカウントを初期化します。同じアカウントの下に複数のアプリケーションを使用できることを忘れないでください。そのため、状況に合ったドメイン名、おそらく組織の名前を選択してください。最初のステップでは、LocalHost URLを許可されたソースに設定する必要があります。これは、「受け入れられたソース(CORS)」テキスト領域で実行できます。

    Redux Authentication: Secure Your Application with Auth0

    Webサーバーを設定します

    最初にJedi Webサーバーの問題を解決しましょう。これには、JEDIをJSONデータとして返す単純なRESTFUL APIだけが必要であり、NodeJSとExpress Frameworksを使用するには、これをすばやく実行する1つの方法です。任意のサーバー側の言語またはフレームワークを使用して、JSONデータを返すだけです。

    注:スターウォーズの純粋主義者は、アプリ全体で「ジェダイ」をジェダイの形式として使用していることに気付くでしょうが、これは正しい複数形ではありません。代わりに、「Jedi」のみを使用する必要があります。たぶんそれは本当かもしれませんが、私たちのアプリを簡単にするので、私はこれで大丈夫です:)

    最初に、アプリケーションを初期化し、依存関係をインストールします:

    mkdir server && cd server
    touch server.js
    npm init
    npm install express express-jwt cors
    ログイン後にコピー
    サーバーが単一のJavaScriptファイルに必要なすべてのコードを提供できます。

    // server.js
    
    const express = require('express');
    const app = express();
    const jwt = require('express-jwt');
    const cors = require('cors');
    
    app.use(cors());
    app.use(express.static('public'));
    
    // express-jwt 提供的身份验证中间件。
    // 此中间件将检查传入请求,以获取应用于它的任何路由上的有效 JWT。
    const authCheck = jwt({
      secret: 'AUTH0_SECRET',
      // 如果您的 Auth0 客户端是在 2016 年 12 月 6 日之前创建的,
      // 请取消注释下面的行并删除上面的行
      // secret: new Buffer('AUTH0_SECRET', 'base64'),
      audience: 'AUTH0_CLIENT_ID'
    });
    
    var jedis = [
      {
        id: 1,
        name: 'Luke Skywalker',
        image: 'http://localhost:7000/images/luke-skywalker.jpg'
      },
      {
        id: 2,
        name: 'Anakin Skywalker',
        image: 'http://localhost:7000/images/anakin-skywalker.png'
      },
      {
        id: 3,
        name: 'Yoda',
        image: 'http://localhost:7000/images/yoda.png'
      },
      {
        id: 4,
        name: 'Obi-Wan Kenobi',
        image: 'http://localhost:7000/images/obi-wan-kenobi.jpg'
      },
      {
        id: 5,
        name: 'Mace Windu',
        image: 'http://localhost:7000/images/mace-windu.jpg'
      }
    ];
    
    app.get('/api/jedis', (req, res) => {
      const allJedis = jedis.map(jedi => { 
        return { id: jedi.id, name: jedi.name }
      });
      res.json(allJedis);
    });
    
    app.get('/api/jedis/:id', authCheck, (req, res) => {
      res.json(jedis.filter(jedi => jedi.id === parseInt(req.params.id))[0]);
    });
    
    app.listen(7000);
    console.log('Listening on http://localhost:7000');
    
    ログイン後にコピー
    ジェダイアレイとそれらを処理する2つのエンドポイントがあります。最初のエンドポイントはすべてのジェダイを返しますが、IDと名前のプロパティのみが返されます。 2番目のエンドポイントは /jedis /:idにあり、単一のジェダイを返しますが、画像URLも含まれます。認証ミドルウェアを使用して、2番目のエンドポイントを保護し、アクセスする認証ユーザーのみに制限します。

    しかし、このエンドポイントを実際に保護するにはどうすればよいですか? Express-JWTを使用して、着信JSON Webトークンを探して、提供するキーに基づいてそれらを検証するミドルウェアを作成します。その後、このミドルウェアをエンドポイントのいずれかに適用できます。これを /jedis /:id endpointの2番目のパラメーターで行い、有効なトークンを含むリクエストのみが渡すことができます。

    ミドルウェア自体は、Auth0キーとクライアントIDをAuthCheckに提供することにより設定されます。ここでは、アプリケーションに固有のキーを提供できます。これらのキーは、Auth0 Adminパネルの下にあります。

    ジェダイ画像は、サーバー上のパブリックディレクトリからのものです。リポジトリから同じ画像を取得することも、必要に応じて、データ内の他のソースからの画像へのリンクを含めることもできます。

    サーバーが配置されている場合、APIが予想どおりに機能することを確認しましょう。 Postmanのようなツールを使用してこれを行うことができます。

    Redux Authentication: Secure Your Application with Auth0

    /api /jedisルートに行くと、予想通りにジェダイの完全なリストを取得できます。ただし、ジェダイを取得しようとすると、トークンをサーバーに送信していないため、リソースを取得することは許可されていません。

    Redux Authentication: Secure Your Application with Auth0

    アプリケーション自体にAPI呼び出しを実装したら、リクエストを使用してトークンを送信する方法を確認しますが、基本的には、承認ヘッダーにBearerスキームを使用して含める必要があります。

    ...(後続のコンテンツは元のテキストに似ていますが、文は置き換えられ、文の構造の調整が調整されます。長さは長すぎます。

以上がRedux認証:Auth0でアプリケーションを保護しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

独自のJavaScriptライブラリを作成および公開するにはどうすればよいですか? 独自のJavaScriptライブラリを作成および公開するにはどうすればよいですか? Mar 18, 2025 pm 03:12 PM

記事では、JavaScriptライブラリの作成、公開、および維持について説明し、計画、開発、テスト、ドキュメント、およびプロモーション戦略に焦点を当てています。

ブラウザでのパフォーマンスのためにJavaScriptコードを最適化するにはどうすればよいですか? ブラウザでのパフォーマンスのためにJavaScriptコードを最適化するにはどうすればよいですか? Mar 18, 2025 pm 03:14 PM

この記事では、ブラウザでJavaScriptのパフォーマンスを最適化するための戦略について説明し、実行時間の短縮、ページの負荷速度への影響を最小限に抑えることに焦点を当てています。

フロントエンドのサーマルペーパーレシートのために文字化けしたコード印刷に遭遇した場合はどうすればよいですか? フロントエンドのサーマルペーパーレシートのために文字化けしたコード印刷に遭遇した場合はどうすればよいですか? Apr 04, 2025 pm 02:42 PM

フロントエンドのサーマルペーパーチケット印刷のためのよくある質問とソリューションフロントエンド開発におけるチケット印刷は、一般的な要件です。しかし、多くの開発者が実装しています...

ブラウザ開発者ツールを使用してJavaScriptコードを効果的にデバッグするにはどうすればよいですか? ブラウザ開発者ツールを使用してJavaScriptコードを効果的にデバッグするにはどうすればよいですか? Mar 18, 2025 pm 03:16 PM

この記事では、ブラウザ開発者ツールを使用した効果的なJavaScriptデバッグについて説明し、ブレークポイントの設定、コンソールの使用、パフォーマンスの分析に焦点を当てています。

誰がより多くのPythonまたはJavaScriptを支払われますか? 誰がより多くのPythonまたはJavaScriptを支払われますか? Apr 04, 2025 am 12:09 AM

スキルや業界のニーズに応じて、PythonおよびJavaScript開発者には絶対的な給与はありません。 1. Pythonは、データサイエンスと機械学習でさらに支払われる場合があります。 2。JavaScriptは、フロントエンドとフルスタックの開発に大きな需要があり、その給与もかなりです。 3。影響要因には、経験、地理的位置、会社の規模、特定のスキルが含まれます。

ソースマップを使用して、マイナイドJavaScriptコードをデバッグするにはどうすればよいですか? ソースマップを使用して、マイナイドJavaScriptコードをデバッグするにはどうすればよいですか? Mar 18, 2025 pm 03:17 PM

この記事では、ソースマップを使用して、元のコードにマッピングすることにより、Minified JavaScriptをデバッグする方法について説明します。ソースマップの有効化、ブレークポイントの設定、Chrome DevtoolsやWebpackなどのツールの使用について説明します。

JavaScriptを使用して、同じIDを持つArray要素を1つのオブジェクトにマージする方法は? JavaScriptを使用して、同じIDを持つArray要素を1つのオブジェクトにマージする方法は? Apr 04, 2025 pm 05:09 PM

同じIDを持つ配列要素をJavaScriptの1つのオブジェクトにマージする方法は?データを処理するとき、私たちはしばしば同じIDを持つ必要性に遭遇します...

Console.log出力の違い結果:なぜ2つの呼び出しが異なるのですか? Console.log出力の違い結果:なぜ2つの呼び出しが異なるのですか? Apr 04, 2025 pm 05:12 PM

Console.log出力の違いの根本原因に関する詳細な議論。この記事では、Console.log関数の出力結果の違いをコードの一部で分析し、その背後にある理由を説明します。 �...

See all articles