2017-06-15 3 views
1

私は実際に反応ベースのフロントエンドアプリケーションを開発しています。同型機能をオンにしたいと思います。 ユーザーは認証できますが、現在JWTを使用してクライアント接続をlocalstorageに保存しています。isomorphic(またはユニバーサル)のユーザーコンテキストがJWTのアプリケーションと反応する

私の問題は、ユーザーの接続時にアプリケーションの最初のページが異なることがあるということです。

実際には、ページがロードされ、xhr要求がヘッダーにトークンとともに送信されるため、サーバーの応答はトークンに依存します。 しかし、私が同形レンダリングに切り替えると、トークンは要求に含まれないので、サーバーはユーザーが切断されているかのように応答を返します。ここで

は、それが実際にどのように動作するかを説明するためのスキームである:

enter image description here

まずブラウザはNode.jsのサーバーからJavaScriptをロードします。ユーザトークンがすでに存在する場合、ブラウザはこのトークンを使用してバックエンドに要求を送信します。したがって、応答はユーザーの権限によって異なります。

さて、同型JSためのスキーム:ページがnode.js.によって生成される

enter image description here

したがって、要求はnode.jsによってバックエンドに送信されるため、node.jsにはブラウザに格納されたトークンへのアクセス権がありません。

この問題を解決する方法があるかどうかを知りたいと思います。

ありがとうございます。

答えて

1

JWTは、localStorageではなくcookieに格納できます。このようにして、サーバー側のアプリケーションはJWTにもアクセスして認証された呼び出しを行うことができます。

JWTをどのように使用するかは、保管場所によって変わりません。 js-cookieのようなライブラリは、クッキーを簡単に管理します。

Cookies.set('jwt', jwt, { secure: true }); 

ここで、CSRFに注意する必要があるということです。別のサイトからドメインにトリガーされたAPI呼び出しには、ユーザーがある場合はCookieが含まれます。ページ上に一意のCSRFトークンを作成すると、これを防ぐことができます。

ストームパスは、cookies vs localStorageに格納するのに良い書き方があります。

関連する問題