2017-07-26 3 views
0

私はexpress + postgresバックエンドを持っており、私はFB oauthのた​​めにパスポート - フェイスブックを使用しています。ログインに成功すると、SPAがロードされるホームページにリダイレクトされます。 JWTでセッションクッキーを使用しているのは悪い考えですか?

ユーザーが/に私のアプリにヒットし、localStorageに有効なトークンを持たない場合は、/loginになります。

私の/loginページ(よく似た「Facebookに続行」メッセージが表示されます)は、サーバーのレンダリングです(さまざまな理由で)。このボタンをクリックすると、ユーザーが存在するかどうかを確認し、最初のJWTでセッションCookieを送信するか、新しいユーザーを作成して最初のJWTでセッションCookieを送信します。いずれの場合も、成功条件は/にリダイレクトされ、SPA資産を提供したことです。

SPAが最初に行うことの1つは、セッションクッキーからJWTを取り出し、それをlocalstorageに入れてからクッキーを削除することです。

これはひどいアプローチですか、それとも私のユースケースで有効ですか?

答えて

0

JWTをクライアントに保存する手段としてセッションクッキーを使用しています。これは、サーバーリソースを費やして有効期限が切れるまで開いたままのサーバーセッションを作成することを意味します。

セッションクッキーはJavaScriptから読み取れないため、JWTを取得するサーバーにリクエストを送信します。

このプロセスは問題はないようですが、set-cookieヘッダーの通常のCookieを使用して、リダイレクトプロセスを直接JWTの応答で送信することで最適化できると思います。クッキーはクライアントに保存され、直接アクセスすることができます

+0

ありがとうございます。私は 'res.cookie( 'auth'、req.token)'をやっています。これはセッションCookieと見なされますか、間違った用語を使用していますか?私はオプションを渡すつもりはないし、ユーザーがブラウザを閉じるとクッキーが消えてしまいたい。 – scarywolfman

+0

いいえ、これはサーバーでセッションを作成しない通常のCookieです。有効期限を設定していないため、ブラウザを再起動するとCookieが消えます。これは私がそれをやることを提案した方法です – pedrofb

関連する問題