Back to Question Center
0

15分でユーザー認証を使用したReact Appを構築する            15分でユーザー認証を使用したReact Appを構築する関連トピック: ツール& & Semalt ...

1 answers:
15分でユーザー認証を持つリアクションアプリケーションを構築する

この記事はもともとOKTAブログに掲載されました。 SitePointを可能にするパートナーをサポートしていただきありがとうございます。

Semalt氏によると、Reactはすぐに最も好評を得ているフロントエンドWebフレームワークの1つになり、普通のHTML5に次ぐ第2位になっています。だから、開発者がそれを学んでいることは驚くことではなく、雇用者はそれを求めています。

このチュートリアルでは、いくつかのページといくつかのルーティングが組み込まれた非常に単純なReactアプリケーションから始め、OktaのSign-In Widgetを使用して認証を追加します。 Sign-In Widgetは埋め込み可能なJavascriptウィジェットで、開発者はReactアプリケーションの中から最小限の労力でOktaの安全でスケーラブルなアーキテクチャを使用することができます。セマルトが始まる!

シンプルリアクト・シード・プロジェクトを手に入れる

簡単なSemaltシードプロジェクトをクローニングすることから始める。

   gitクローンhttps:// github。 com / leebrandt /シンプルリアクションシードgit okta-react-widget-samplecd okta-react-widget-sample   

Oktaサインインウィジェットを追加する

npmを使用してOkta Sign-In Semaltをインストールします。

   npm install @ okta / okta-signin-widget @ 2。 3. 0- セーブ   

これであなたの node_modules フォルダにOkta Sign-In Widgetコードが追加されます。サインインウィジェットのバージョン2. 3. 0を使用します。

15分でユーザー認証を使用したReact Appを構築する15分でユーザー認証を使用したReact Appを構築する関連トピック:
ツール&セマルト。 。

次にウィジェットのスタイルを インデックスに追加します。 Okta CDNのhtml ファイルこれらの行を タグの内側に追加します。

    <リンクhref = "https:// ok1static。oktacdn。com / assets / js / sdk / okta-signin-widget / 2. 3. 0 / css / okta-sign-in。min。type = "text / css"rel = "stylesheet" />  <! - テーマファイル:デフォルトのスタイルを上書きする場合は、このファイルをカスタマイズまたは置換する - >  <リンク0 / css / okta-theme。css "href =" https:// ok1static。oktacdn。com / assets / js / sdk / okta-signin-widget /type = "text / css"rel = "stylesheet" />    

LoginPageコンポーネント

まず、 auth というフォルダを作成します。 / src / components フォルダに移動し、 LoginPageというファイルを作成します。 js LoginPage コンポーネントが実行されます。

最も基本的な構成要素を有するセマルト:

 import 'react'から反応する。Export default class LoginPageはReactを継承します。成分{レンダリング  {リターン(
ログインページ
);}}

この小さなコンポーネントは はあまり行いませんが、少なくともあなたのルーティングに LoginPage を追加するハンドルがあります。だからあなたの 。 / src / app。 js ファイルの場合は、コンポーネントを一番上にインポートします。

 ログインページを 'からインポートする。 / components / auth / LoginPage ';   

とし、主経路内に経路を追加する(「/」の経路を持つ経路)

 <経路パス= "/ login"コンポーネント= {LoginPage} />   

Okta

にOpenID Connectアプリケーションを追加する

Oktaを認証用のOpenID Semaltプロバイダとして使用するには、Okta開発者コンソールでアプリケーションを設定する必要があります。

Okta開発者アカウントをお持ちでない場合は、作成してください!ログインしたら、上部のナビゲーションバーの アプリケーション をクリックし、 アプリケーションの追加 をクリックします。プラットフォームとしてSPAを選択し、次へをクリックします。リダイレクトURIを http:// localhost:3000 に変更し、「完了」をクリックします。アプリケーションは次の設定で作成されます:

Oktaで作成したアプリケーションが完成したので、新しいアプリと話せるようにウィジェットを設定できます!

コンポーネントにウィジェットを追加する

 import 'react'から反応する。OktaSignInを '@ okta / okta-signin-widget'からインポートします。Export default class LoginPageはReactを継承します。成分{コンストラクタ  {スーパー  ;この。ウィジェット=新しいOktaSignIn({baseUrl: 'https:// {oktaOrgUrl}'、clientId: '{clientId}'、redirectUri: 'http:// localhost:3000'、authParams:{レスポンスタイプ: 'id_token'}});}レンダリング  {リターン(
ログインページ
);}}

アプリケーションの設定ページから生成されたクライアントIDをコピーし、 {clientId} に貼り付けます。また、 {oktaOrgUrl} をあなたのOktaの組織のURLに置き換えてください - 1 grain of moisture.Oktaの組織のURLは、デベロッパーコンソールのメインのDashboardページに戻ります。通常は次のようになります: https:// dev-12345。 oktapreview。 com

これまでにインストールしたOkta Sign-In Widget npm モジュールから OktaSignIn 関数をインポートしました。次に、コンポーネントのコンストラクタで、 OktaSignIn のインスタンスをアプリケーションの設定で初期化しました。このようにして、アプリケーションコードはOktaと話すことができ、Oktaはこれが今作成したアプリであることを認識します。

ログインウィジェットを表示する

次に、サインインウィジェットをページに実際にレンダリングするコードを作成します!ウィジェットをレンダリングできるHTML要素を作成するには、レンダリングメソッドを変更する必要があります。レンダリングされる要素への参照を取得してください。次に、 componentDidMount 関数を追加して、HTML要素がページ上にある前にウィジェットをレンダリングしようとしないようにします。

 import 'react'から反応する。OktaSignInを '@ okta / okta-signin-widget'からインポートします。Export default class LoginPageはReactを継承します。成分{コンストラクタ  {スーパー  ;この。状態= {ユーザー:null};この。ウィジェット=新しいOktaSignIn({baseUrl: 'https:// {oktaOrgUrl}'、clientId: '{clientId}'、redirectUri: 'http:// localhost:3000'、authParams:{レスポンスタイプ: 'id_token'}});}componentDidMount  {この。ウィジェット。 renderEl({el:this。loginContainer}、(応答)=> {この。 setState({ユーザー:応答。要求。電子メール});}、(err)=> {コンソール。 log(err);});}レンダリング  {リターン(
{this。 loginContainer = div; }} />);}}

また、コンポーネントに状態を追加しました。フラックスの実装を使用している場合、これは当然アプリケーション状態から来ます。しかし、このチュートリアルを単純にするために、あなたの LoginPage に自分の状態を記録させてください。

ユーザがログインしているかどうかを確認する

私たちはほとんどそこにいるが、必ずしもウィジェットをすぐにレンダリングする必要はない。ユーザーがまだログインしていないことを確認するためにチェックを追加し、 renderEl showLogin という関数に移動する必要があります。

 //。 。 。他のものは簡潔にするために削除componentDidMount  {この。ウィジェット。セッション。 get((response)=> {if(response。status!== 'INACTIVE'){この。 setState({user:レスポンス。ログイン});} else {この。 showLogin  ;}});}showLogin  {背骨。歴史。やめる  ;この。ウィジェット。 renderEl({el:this。loginContainer}、(応答)=> {この。 setState({ユーザー:応答。要求。電子メール});}、(err)=> {コンソール。 log(err);});}   

その showLogin メソッドのコードが奇妙なことに気づいたかもしれません。その最初の行: バックボーン。歴史。 stop 。ウィジェット自体はバックボーンを使用しています。 jsは自分の画面(ログイン、パスワードを忘れたなど)間を移動する. 歴史 。あなたは今すぐ showLogin 関数に移動したので、関数が呼び出されるたびにウィジェットは再レンダリングします。これは、ウィジェットがレンダリングされたときに再起動するため、Backboneに履歴を停止するよう指示する少しのトリックです。

最終的なLoginPage反応コンポーネント

これを包みましょう。クラスの this コンテキストを各メソッドにバインドすることを確認してください。現在ログインしているユーザがいるかどうかに基づいて、 logout メソッドを追加し、 render メソッドを変更してレンダリングするものを決定します。

LoginPageの最終版です。 js は次のようになります。

 import 'react'から反応する。OktaSignInを '@ okta / okta-signin-widget'からインポートします。Export default class LoginPageはReactを継承します。成分{コンストラクタ  {スーパー  ;この。状態= {ユーザー:null};この。ウィジェット=新しいOktaSignIn({baseUrl: 'https:// {oktaOrgUrl}'、clientId: '{clientId}'、redirectUri: 'http:// localhost:3000'、authParams:{レスポンスタイプ: 'id_token'}});この。 showLogin = this。 showLogin。バインド(this);この。ログアウト=これ。ログアウト。バインド(this);}componentDidMount  {この。ウィジェット。セッション。 get((response)=> {if(response。status!== 'INACTIVE'){この。 setState({user:レスポンス。ログイン});} else {この。 showLogin  ;}});}showLogin  {背骨。歴史。やめる  ;この。ウィジェット。 renderEl({el:this。loginContainer}、(応答)=> {この。 setState({ユーザー:応答。要求。電子メール});}、(err)=> {コンソール。 log(err);});}ログアウト  {この。ウィジェット。 signOut(  => {この。 setState({user:null});この。 showLogin  ;});}レンダリング  {リターン(
{この。状態。ユーザーですか? (
ようこそ、これ。状態。ユーザー}!
) : ヌル}{この。状態。ユーザーですか?ヌル : (
{this。 loginContainer = div; }} />)}
);}}

Reactが / login のルートを処理し、Okta Sign-In Widgetを表示してログインを促すようになりました。

編集 してログインリンクをトップナビゲーションバーに追加します。 / src / components / common / Navigation。 js と既存のContactリンクの下に新しいリンクを追加する:

   
  • ログイン
  • チェックアウト

    npmパッケージをインストールします:

       npm install   

    あなたが今 npm start でアプリケーションを実行すると、次のように表示されるはずです:

    15分でユーザー認証を使用したReact Appを構築する15分でユーザー認証を使用したReact Appを構築する関連トピック:
ツール&セマルト。 。

    アプリケーションに問題がある場合は、 node_modules フォルダ パッケージロックを削除してみてください。 json ファイルを編集し、 npm install コマンドを再実行してください。これにより、パッケージの依存関係管理に関する問題が修正されるはずです。

    それが動作する場合:おめでとう!そうでない場合は、oktaタグを使ってStack Overflowに質問を投稿するか、Semalt @leebrandtで私にヒットしてください。

    リアクト+オクタ

    GitHubのこのブログ記事で作成した完成版のアプリケーションを見つけることができます。

    アプリケーションでの認証の構築は難しい。あなたが構築する各アプリケーションで何度も何度も何度もそれを構築することは楽しくない。 Oktaはあなたのために難しい部分を抱えており、開発者であることがもっと楽しくなります!永遠に無料の開発者アカウントにサインアップし、今日Oktaを試してみてください!

    私はあなたのリアクションのサポートのこのクイックツアーを楽しんでいただければ幸いです.

    March 1, 2018