問題タブ [connect-mongo]
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.
node.js - connect-mongo が毎秒新しいセッションを作成する
私は自分の nodejs アプリを Openshift でホストしています。ここに私の仕様があります:
ノード v0.10.35、エクスプレス v3.4.8
私のpackage.jsonの依存関係:
そして、ここに私のserver.jsがあります
問題は、データベースのセッション コレクションのエントリ数を数えることからわかるように、connect-mongo が毎秒新しいセッションを作成していることです。現在 Web サイトを使用しているアクティブなユーザーがいない場合でも、セッションが作成されています。これは正常ですか?
編集:ほとんどのAPI呼び出しで、ユーザーがpassport isauthenticatedメソッドを使用してログインしているかどうかを確認するために使用するミドルウェアが原因ですか。しかし、奇妙なことは、リダイレクトを続ける以下のnode.logからわかるように、サーバーにリクエストを行っているユーザーがいない場合でも呼び出されることです
node.js - set-cookie フィールドは存在しますが、ブラウザの [リソース/アプリケーション] タブに設定されていません
応答ヘッダーに Cookie が設定されていますが、ブラウザーに Cookie が保存されていません。フロント/バックエンド コンポーネントは、それぞれ localhost:8080/8082 で実行されます。
nodev5+、expressv4+を使用し、両方を試しましたconnect-mongo/connect-redis
Chrome v. 52.0.2743.82
Chrome はかなり前から Cookie でうまく動作するはずですが、ファイルに のようなdomain=localhostPTR を作成しようとしましたが、違いはありません。/etc/hosts127.0.0.1 local.com
応答に表示される一連のヘッダー フィールドを次に示します。
httpOnlyフラグを無効にしようとしましたが、それでも同じです。
node.js - 終了したセッションは破棄されていません
私のアプリケーションは、connect-mongo、express-session、keystone、およびパスポート処理のログインとユーザー セッションを使用しています。
ただし、セッションが終了すると (ユーザーがログアウトするか、ブラウザ ウィンドウを閉じると)、セッションは MongoDB セッション ストアから削除されません。
ミドルウェアのセットアップは次のとおりです。
MongoDB のセッションのコレクション名はapp_sessionsです。依存関係ツリーを検索すると、これが Keystone CMS によって処理されていることがわかります。
また、Cookie 名はkeystone.sidです。
これは私のキーストーン設定です:
最後に、MongoDB のセッション オブジェクトの例をいくつか示します。
セッションが破棄されない理由がわかりますか?
node.js - Node.js Web アプリは、ブラウザーを再度開くたびに新しいセッションを確立します
すべてのブラウザー ウィンドウを閉じてから Web アプリを再度開くたびに、新しいセッションが確立されます。つまり、再度認証する必要があります。
参考までに、私express@4.14.0は Web アプリケーション フレームワークとしてexpress-session@1.14.1+connect-mongo@1.3.2セッションを保存するためのミドルウェアとpassport@0.3.2認証のために使用します。
以下は、Cookie とセッション構成のコードです。
MongoDB に保存されている「古い」セッションの有効期限は、まだ 2 週間あります。
Node.js アプリケーションはブラウザーから「古い」セッションを認識できないようです。そのため、「新しい」セッションを作成し、ブラウザーに「新しい」セッションを使用するように指示します。
時々発生するわけではありませんが、常に発生するため、Web アプリケーションに問題があると思います。
express-session - Nodejs/Express セッション - エラー: 送信後にヘッダーを設定できません
シンプルな nodejs サンプル アプリでエクスプレス セッションを使用しようとすると、以下のエラーが発生します。
「resave」を true に設定すると以下のエラーが表示されますが、false に設定するとエラーは発生しません。
GET / 304 13.380 ミリ秒 - - エラー: 送信後にヘッダーを設定できません。ServerResponse.OutgoingMessage.setHeader (_http_outgoing.js:344:11) で ServerResponse.header (/Volumes/SURESH/GSKLabs/NodeApp/node_modules/express/lib/response.js:718:10) で ServerResponse.contentType (/Volumes) /SURESH/GSKLabs/NodeApp/node_modules/express/lib/response.js:551:15) で ServerResponse.send (/Volumes/SURESH/GSKLabs/NodeApp/node_modules/express/lib/response.js:138:14) で完了 (/Volumes/SURESH/GSKLabs/NodeApp/node_modules/express/lib/response.js:957:10)
以下はapp.jsのコードです
ルート/index.js
パッケージ.json
私の理解によると、resave:true 以来、応答が既に送信された後に Cookie を設定しようとする高速セッション。高速セッションでローリング オプションを使用するには「true」である必要があるため、resave:false に変更することはできません。
上記のサンプル コードでこのエラーを解決する方法を教えてください。ありがとう。
node.js - Connect-mongo 構文エラー: 予期しないトークン =>
こんにちは、次のエラーがあります
私はこれらのバージョンを持っています:
node@v3.3.1
express@4.14.0
マングース@4.6.5
mongodb@2.2.11
amazon-web-services - Express Session と Amazon Beanstalk とヘルスチェック
Express セッション、connect-mongo、および Amazon Beanstalk に問題があります。
Amazon Beanstalk がヘルスをチェックするたびに、API にリクエストを実行しますが、mongodb データベースに新しいドキュメントを作成します。したがって、Amazon は短時間で、サービスを提供しないセッションで 200.000 の新しいドキュメントを作成します。
その要求を無視できる方法はありますか?
ありがとう。
