2015-12-08 44 views
10

私は人々が通常、reduxでユーザ認証をどのように処理するのか疑問に思っていましたか?私はRedux Routerを使用しており、認証トークンを介したユーザー認証を処理するバックエンド・レールAPIを持っています。ReduxとRedux Routerによるユーザ認証の処理

ユーザーがサインインフォームを送信すると、apiは後続のリクエストに使用するauthトークンを返します。もともと私はその認証トークンを単一の状態ツリーに保存しました。ユーザー認証が必要なAPI要求を行う必要があるアクションをディスパッチするたびに、(authトークンを取得してAPIに含めるために)要求。したがって:getState()。currentUser.auth_token。

私は正しい方法でこれに近づいているのか分かりません。一部の人々は、サーバー側のセッションと同様にシミュレーションするために、ReduxでlocalStorageをユーザー認証に使用していますか? APIのリクエストが行われるたびに、ローカルストレージにauthトークンがないかどうかチェックし、そこにログインしている場合は、

私がやったことは、js-クッキーを使っていて、Cookieをやったことです。ユーザが認証されたときに設定されました。私のルート<App />コンポーネントには、現在のCookieがまだ有効かどうかを調べるinitAuth()アクションを送出するcomponentDidMountがあります。そうであれば、ユーザーは署名されたままになります。それ以外の場合は、認証減速機がdefaultStateにリセットされます。ここで

は、ユーザ認証とのレポへのリンクです:https://github.com/SpencerCDixon/Kira/blob/master/client/actions/AuthActions.js

任意のヒントやリソースがはるかに高く評価されるだろう。私は現実世界の例とこれまでのReact Router authの例を見てきました。 React Routerの例ではlocalStorageを使用しているようですが、これは適切なパスであれば私は不思議です。私は、Redux Localstorage npmパッケージもあることに気付きました。

私は誤って何らかの種類の認証攻撃を受けたことがあるのか​​、このフローに近づくより良い方法があるのか​​知りたいですか?

答えて

10

私は人々が通常、レビュックスでユーザー認証をどのように処理するのか疑問に思っていましたか?

私は非常に多くのプロジェクトでこの状況に陥っていました。私はReact/Reduxアプリケーションで認証を処理する必要があるたびに汗をかくことはできませんでした。

私のプロジェクトでは、Node.jsを使用していますが、これは何も変更されません。サーバーサイドの技術を使用できます。

ソリューション

ユーザーがトークンを持っている場合、でそれを確認するチェックし、言ったように私は、単一ページのアプリケーション(SPA)に、認証機構は、クライアント側で処理されることを気づきましたあなたのSPAにReact/Redux、Angular、Ember、またはBackboneを使用しているかどうかは問題ではなく、常に厄介になります。

メインアプリケーションから認証(サインアップ/サインイン)プロセスを分離したので、ユーザーが初めてアプリケーションを起動すると、サーバはtokenのクッキーをチェックします。サーバーはこのトークンを検証し、有効なものであれば、クライアントをメインアプリケーションページ(index.htmlなど)にリダイレクトします。トークンが有効でないか存在しない場合、サーバーはクライアントをログイン/サインアップページ(login.html/signup.html)。

login.htmlページは、主なアプリケーション(index.htmlにあるもの)の一部ではありません。実際には、コードベースがずっと小さく(コードが軽くて、ページをさらに高速に読み込むことができます)、ユーザーがログインしようとすると、サーバーはそのlogin.htmlページからユーザー名とパスワードを検証し、有効な資格情報であればサーバーはそのユーザーのtoken Cookieを設定し、メインアプリケーションページ(index.html)にリダイレクトします。ユーザーがこのページ(index.html)をロードできた場合、有効なトークンを持っていなければならないため、アプリケーションコードは認証を処理する必要なしにロードできます。

+0

ユーザー認証のための意志場合は、基本的に独立した「サービス」のように作成してうん、それは理にかなっています。あなたの入力のために甘いありがとう私はそれを感謝します – spencercdixon

+1

あなたのログイン/サインアップの例のためのgitへのリンクを持っています – hounded

+2

私は自分のアプリケーションがユーザーのログイン状態を認識したい場合はどうすればよいですか?ユーザーが認証されていなくてもアプリは(完全にまたは部分的に)機能しているはずです。 –

1

私はちょうどredux authオープンソースプロジェクトの作業を終了しました。私はlocalStorageにトークンを格納しています。バックエンドのために私はノードを使用していますが、私はあなたがアイデアを得るだろうと思います。

https://github.com/DimitriMikadze/node-redux-auth

関連する問題