Redux認証:Auth0でアプリケーションを保護します
コアポイント
- Reduxは、特に大規模なアプリケーションの場合、データフローを予測と管理が容易にするための構造化された方法を提供します。
- auth0はユーザー認証に使用され、複雑なバックエンド設定なしのソーシャルログインやマルチファクター認証などの迅速なセットアップと高度な機能を提供します。
- JSON Web Tokens(JWT)は、従来のセッションベースの認証プロセスを簡素化するRestful APIに対する安全なステートレス認証に使用されます。 このチュートリアルは、Auth0のロックウィジェットを使用してログインプロセスを簡素化し、Reduxミドルウェアを使用してAPI呼び出しを効率的かつ安全に処理します。
- 保護されたルーティングにより、アプリケーションの一部が認証されたユーザーのみがアクセスできるようになり、セキュリティが強化されます。
- アプリケーションアーキテクチャには、認証ステータスを処理し、APIからデータを取得するためのReduxアクション、還元剤、およびミドルウェアのセットアップが含まれます。
- この記事のピアレビューをしてくれたPeleke Sengstackeに感謝します。 SitePointコンテンツを最高の状態にしてくれたすべてのSitePointピアレビュアーに感謝します!
いいですね。しかし、問題は次のとおりです。より多くのコードを記述する必要があります。ただし、大規模なアプリケーションの維持経験がある場合は、データ処理が制御が困難になり、管理が困難になる可能性があることがわかる場合があります。 Reduxを使用すると、アプリケーションのステータスを常に明確に理解し、データが何をしているのかを正確に知ることができます。 このチュートリアルでは、ユーザーを認証し、リモートAPIを呼び出してデータを取得するReal React Reduxアプリケーションの作成を開始する方法を学びます。私たちのアプリは、ノードバックエンドからスターウォーズジェダイリストを取得して、名前と写真を表示できるようにします。認証のために、auth0を使用して、迅速に起動して実行できるようにします。また、ソーシャルログインやマルチファクター認証などの機能を簡単に取得することもできます。
reduxの基本概念には入りません。したがって、ライブラリに慣れていない場合は、次の優れた入門リソースをご覧ください。
React、Redux、およびImmutable.jsを使用してTo Doアプリケーションを構築する方法
reduxドキュメント
今後のアプリケーションのソースコードは、こちらからダウンロードできます。
redux認証:開始
このチュートリアルのReactプロジェクトはES2015で記述されるため、Babelを使用してES5にコンパイルし、Webpackを使用してモジュールバンドルを処理します。ゼロからセットアップする代わりに、ReduxリポジトリのDanの実際のスターターの例から始めましょう。コピーを入手して、依存関係をインストールします。
npm install
を登録します
私たちが構築しているような単一ページアプリケーションを認証する最良の方法は、JSON Web Tokens(JWT)を使用することです。 JWTは、Restful APIに対してステートレス認証の方法を提供します。これには、セッションとCookieベースの認証よりも多くの利点があります。欠点は、JWT認証ソリューションを自分で書くことはトリッキーでエラーが発生しやすい場合がありますが、幸いなことに、サーバーやセキュリティの実装の詳細を心配することなくAuth0を使用できます。まだ行っていない場合は、無料のauth0アカウントにアクセスしてサインアップしてください。無料プランを使用すると、7,000人の通常のアクティブユーザーと2つのソーシャルアイデンティティプロバイダーを利用できます。
登録した後、プロンプトに従ってアカウントを初期化します。同じアカウントの下に複数のアプリケーションを使用できることを忘れないでください。そのため、状況に合ったドメイン名、おそらく組織の名前を選択してください。最初のステップでは、LocalHost URLを許可されたソースに設定する必要があります。これは、「受け入れられたソース(CORS)」テキスト領域で実行できます。
最初に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
// 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');
しかし、このエンドポイントを実際に保護するにはどうすればよいですか? Express-JWTを使用して、着信JSON Webトークンを探して、提供するキーに基づいてそれらを検証するミドルウェアを作成します。その後、このミドルウェアをエンドポイントのいずれかに適用できます。これを /jedis /:id endpointの2番目のパラメーターで行い、有効なトークンを含むリクエストのみが渡すことができます。
ミドルウェア自体は、Auth0キーとクライアントIDをAuthCheckに提供することにより設定されます。ここでは、アプリケーションに固有のキーを提供できます。これらのキーは、Auth0 Adminパネル
サーバーが配置されている場合、APIが予想どおりに機能することを確認しましょう。 Postmanのようなツールを使用してこれを行うことができます。
...(後続のコンテンツは元のテキストに似ていますが、文は置き換えられ、文の構造の調整が調整されます。長さは長すぎます。
以上がRedux認証:Auth0でアプリケーションを保護しますの詳細内容です。詳細については、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)

ホットトピック











さまざまなJavaScriptエンジンは、各エンジンの実装原則と最適化戦略が異なるため、JavaScriptコードを解析および実行するときに異なる効果をもたらします。 1。語彙分析:ソースコードを語彙ユニットに変換します。 2。文法分析:抽象的な構文ツリーを生成します。 3。最適化とコンパイル:JITコンパイラを介してマシンコードを生成します。 4。実行:マシンコードを実行します。 V8エンジンはインスタントコンピレーションと非表示クラスを通じて最適化され、Spidermonkeyはタイプ推論システムを使用して、同じコードで異なるパフォーマンスパフォーマンスをもたらします。

Pythonは、スムーズな学習曲線と簡潔な構文を備えた初心者により適しています。 JavaScriptは、急な学習曲線と柔軟な構文を備えたフロントエンド開発に適しています。 1。Python構文は直感的で、データサイエンスやバックエンド開発に適しています。 2。JavaScriptは柔軟で、フロントエンドおよびサーバー側のプログラミングで広く使用されています。

JavaScriptは、現代のWeb開発のコア言語であり、その多様性と柔軟性に広く使用されています。 1)フロントエンド開発:DOM操作と最新のフレームワーク(React、Vue.JS、Angularなど)を通じて、動的なWebページとシングルページアプリケーションを構築します。 2)サーバー側の開発:node.jsは、非ブロッキングI/Oモデルを使用して、高い並行性とリアルタイムアプリケーションを処理します。 3)モバイルおよびデスクトップアプリケーション開発:クロスプラットフォーム開発は、反応および電子を通じて実現され、開発効率を向上させます。

この記事では、許可によって保護されたバックエンドとのフロントエンド統合を示し、next.jsを使用して機能的なedtech SaaSアプリケーションを構築します。 FrontEndはユーザーのアクセス許可を取得してUIの可視性を制御し、APIリクエストがロールベースに付着することを保証します

私はあなたの日常的な技術ツールを使用して機能的なマルチテナントSaaSアプリケーション(EDTECHアプリ)を作成しましたが、あなたは同じことをすることができます。 まず、マルチテナントSaaSアプリケーションとは何ですか? マルチテナントSaaSアプリケーションを使用すると、Singの複数の顧客にサービスを提供できます

C/CからJavaScriptへのシフトには、動的なタイピング、ゴミ収集、非同期プログラミングへの適応が必要です。 1)C/Cは、手動メモリ管理を必要とする静的に型付けられた言語であり、JavaScriptは動的に型付けされ、ごみ収集が自動的に処理されます。 2)C/Cはマシンコードにコンパイルする必要がありますが、JavaScriptは解釈言語です。 3)JavaScriptは、閉鎖、プロトタイプチェーン、約束などの概念を導入します。これにより、柔軟性と非同期プログラミング機能が向上します。

Web開発におけるJavaScriptの主な用途には、クライアントの相互作用、フォーム検証、非同期通信が含まれます。 1)DOM操作による動的なコンテンツの更新とユーザーインタラクション。 2)ユーザーエクスペリエンスを改善するためにデータを提出する前に、クライアントの検証が実行されます。 3)サーバーとのリフレッシュレス通信は、AJAXテクノロジーを通じて達成されます。

現実世界でのJavaScriptのアプリケーションには、フロントエンドとバックエンドの開発が含まれます。 1)DOM操作とイベント処理を含むTODOリストアプリケーションを構築して、フロントエンドアプリケーションを表示します。 2)node.jsを介してRestfulapiを構築し、バックエンドアプリケーションをデモンストレーションします。
