問題タブ [express-session]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
8583 参照

node.js - CORS 呼び出し後に Express Session が保持されない

TL;DR:

Express、Express-Session、および Express-Cors を使用して、バックボーン アプリと Node.js サーバー間で実行される複数の API 呼び出しにわたるセッションの永続化を成功させることができません。呼び出しのたびにセッションが再初期化/失われたようです。

長いバージョン:

localhost:3000で実行されている Node.js サーバーで次の呼び出しを実行するクライアント Backbone/React/Flux アプリケーションを実行していlocalhost:4242ます。

HTTP 呼び出し

POST http://localhost:4242/api/session

http://localhost:4242/api/users を取得します

基本的に、最初の呼び出しPOST /api/sessionはユーザーのログインであり、API トークンをセッションに保存しようとします。2 番目の呼び出しGET /api/usersは、最初の呼び出しが成功した直後にトリガーされ、ユーザー情報を取得します。

バックボーン方式

ログイン用のセッションモデルのバックボーンメソッドは次のとおりです。

そして、UserStore の /api/users への呼び出し

これらのさまざまなオプションを使用します (Backbone.Collection/Backbone.Model で Backbone.sync をオーバーライドしました):

(簡略化されたバージョン: BaseCollection と BaseModel を使用して、sync() メソッドをオーバーライドしているモデルとコレクションの両方で同じこと)。

そのため、Console.log(options)inBackbone.sync(method, model, options)が返されます:

Node.js のセットアップとメソッド

これが私の Node.js ルーター設定 Express です:

これが私のNode.jsメソッドの処理ですPOST /api/session

そしてお取り扱いの方GET /api/users

Node.js ログ

ログは次のとおりです。

CORS リクエストが正常に実行されていることがわかるように、トークンを適切に取得し、それをセッション内に保存しようとしています。

ただし、2 番目の呼び出しではセッションが永続化されず、最初の呼び出しで実際に設定している変数 (accessToken) にアクセスできません。

ログと 2 つの呼び出しの HTTP ヘッダーを見ると、セッション ID が変更され、各要求が行われるため、毎回セッションが再初期化されているように見えます。私が理解している限りではそうです)。

この動作は、CORS レベルでの構成の一貫性がないか、欠落していることが原因であるか、またはpathセッション ( Express.use(path, middleware)、およびCookie({path: '/'})) のセットが原因であると思われます。ただし、さまざまな構成、セットアップ、およびヘッダーを何度も試みたにもかかわらず、実際には機能しません。

この振る舞いと私が欠けているものについて私を啓発できる人は誰でも大歓迎です:)
ありがとう!

PS: CoffeeScript を使用していない開発者には申し訳ありません ;)

0 投票する
0 に答える
68 参照

node.js - http.request 内のセッション変数を Express で処理する

やあ。UI で req.session.mySessValue を出力すると、値が空になります。req.session.mySessValue = dt.myValue; の割り当てだと思います。(express-session) は適切ではありません。誰でもこれについて私を助けることができます。前もって感謝します。私のエクスプレスコードは

0 投票する
1 に答える
2922 参照

node.js - エクスプレスセッションがnodejsを保存しない

この単純な例は機能しません。リクエストごとにセッションが再度作成されますが、解決方法がわかりません。

リクエストの数を保存しようとしましたが、リクエストを行うたびにセッションが作成されます。

0 投票する
1 に答える
3688 参照

node.js - セッション Cookie が安全な場合、CSURF が機能しない

Cookie をセキュアに設定すると、ノードの csrf が機能しないことに困惑しています。

このセットアップでは、セッション データの保存に MongoDB を使用しています。ドキュメントを読んでexpress-session、私はこれに出くわしました...

secure: true が推奨されるオプションであることに注意してください。ただし、https 対応の Web サイトが必要です。つまり、安全な Cookie には HTTPS が必要です。セキュアが設定されている場合、HTTP 経由でサイトにアクセスすると、Cookie は設定されません。プロキシの背後に node.js があり、secure: true を使用している場合は、express で "trust proxy" を設定する必要があります。

ソース: npm エクスプレス セッション

現在、サイトをローカルで実行しているため、HTTPS ではありません。secure:truecsrfテストに合格しないこととどのように関係があるのか​​ 知りたいですか?

0 投票する
1 に答える
1336 参照

node.js - express-session がユーザーのセッション データを保存していません

express-sessionユーザーのセッション データの保存を拒否しています。

セッション Cookie を保存していますが、データは保持されていませ

これが私のserver.jsです。

0 投票する
0 に答える
99 参照

javascript - Cookie の詳細を理解する JavaScript

フロントエンドの反応アプリケーションで、セッション Cookie が存在するかどうかを確認しようとしています。これは、ログイン ページを表示するか (セッション Cookie が存在しないか無効になっている場合)、またはコンテンツ ページを表示するかを決定するのに役立ちます。

バックエンドの高速セッション ミドルウェアは、「connect.sid」という名前の Cookie を設定します。この Cookie の存在を js-cookie で照会すると、undefinedと表示されます。しかし、私はこのクッキーが存在することを知っています。また、ブラウザー コンソールからプログラムで別の Cookie を作成しました。ブラウザのコンソール ウィンドウからプログラムで設定した Cookie を正常に照会できますが、最初の Cookie を見つけることができません。

使用可能な Cookie を示すスクリーンショットを次に示します。 ここに画像の説明を入力

そして、これがブラウザコンソールからの両方の Cookie に対する私のテストです。 ここに画像の説明を入力

「connect.sid」のクエリが失敗する理由がわかりません。ここで間違っているところを誰かが助けてくれますか...

0 投票する
3 に答える
261 参照

session - エクスプレスセッションはセッションを保存しませんでした

ここでは、express-session を使用してユーザー セッションを保存しましたが、req.session.user が常に未定義であることがわかりました。

面白いことに、chrome プラグインの postman を使用してアクセスしたところ、問題はありませんでした。

それで、それを修正する方法は?

0 投票する
2 に答える
629 参照

node.js - Express 4 および Redis ストア、express-session で未定義の Req.session

Express 4 でのセッションに redis ストアを使用する方法を理解できないようです。いくつかのサンプル コードは次のようになります。

ご覧のとおり、上記の req.session は常に未定義のようであり、明らかにそこに変数を格納することはできません...