問題タブ [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 投票する
0 に答える
1635 参照

node.js - ビューでのエクスプレス セッション変数へのアクセス

EJS ビューでセッション変数にアクセスしようとしています。しかし、それを行うことはできません以下はコードです

これがログインハンドラです

EJS ビューで、ログイン ハンドラーによって設定されたユーザー名を出力しようとしています。

ここで何が欠けていますか?

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

javascript - Express セッション変数がリクエスト間で保持されない

express-sessionモジュールを使用して、Express Node.js プロジェクトでセッション変数を動作させようとしています。エラーは発生せず、セッション変数の設定は機能しているようですが、リクエスト間で持続しません。これが私のコードの簡略化されたビットです:

サーバー.js

api/projects.js ルーター

変数の設定はうまくいくようです...

/setAPI 呼び出しは、 というセッション変数を設定する必要がありますtest。この API 呼び出しを試してみると、次のように動作するように見えますcurl

これは、コンソール ログでも確認されています。

...しかし、次回チェックするときは設定されていません

2 回目の API 呼び出しで変数を確認しようとすると、宣言されていないように見えます。

これはコンソール ログで確認され、test変数は設定されなくなりました。

セッション変数がリクエスト間で保持されるようにするにはどうすればよいですか?

(PS:私はしばらくこれに行き詰まっていました。答えがわからない場合でも、ヒントや解決策に関する小さなコメントは大歓迎です)

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

javascript - ビューを表現するためにセッション変数を公開する方法

EJS ビューでセッション変数にアクセスしようとしていますが、多くの問題に直面しています。

req.session にローカルでアクセスするには、こちらで説明されているようにミドルウェアを使用していますAccessing Express.js req or session from Jade template

ホームルートを処理するための route.js は次のとおりです。

home.ejs では、ユーザー名プロパティが設定されているかどうかを確認して、ユーザーがログインしているかどうかを確認しています。

しかし、メインページにアクセスすると 、未定義エラーのプロパティ 'ユーザー名' を読み取れないというエラーが表示されます

ユーザーが認証されると、セッションでユーザー名を設定しています。

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

node.js - Express セッションと PassportJS の違い

Express-session を使用して、OAuth 2 プロバイダーに対して認証されたユーザーのアクセス トークンを保存し、クライアント アプリケーションに安全に署名された Cookie を提供することを検討しています。

私が理解していることから、セッションストアサーバー側(mongodbなど)からの後続のリクエストでCookieに関連付けられたトークンを取得できます。これは、Expressルートを使用してエンドポイントを分離するリクエストのベアラーAuthorizationヘッダーで使用できます。

私は PassportJS に出会い、セットアップでそれを使用する必要があるかどうかを判断しようとしています。

現在、エクスプレス アプリでログイン POST リクエストを処理してから、リソース オーナーのパスワード資格情報付与タイプのリクエスト フローを使用してアクセス トークン リクエストを作成しています。これは正常に機能しており、プロバイダーから更新トークンと有効期限とともにアクセス トークンを受け取っています。

私が知る限り、PassportJS はあらゆる種類のプロバイダーに認証戦略を提供しますが、私のケースで使用されている許可タイプをサポートするかどうかはわかりません。さらに、私はすでにトークンを要求して受け取る作業を行っているので、PassportJS がここで私にとってどれほどの利益になるかはわかりません。

高速セッションのドキュメントを読むと、これで必要なものがすべて得られると思います。さらに、API ゲートウェイから返されたトークンの有効期限に基づいて Cookie の有効期限を設定できます。

PassportJS は高速セッションの上にあり、高速で生成されたセッションにアクセスするだけだと思いますが、それは正しいですか?

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

node.js - express-session: バンドルされたメモリストアの代替手段

Express-session をアプリケーションに実装することを検討しており、このライブラリに付属のバンドルされたメモリストアの代わりに使用するセッションを選択する必要があります。

実稼働環境でメモリストアを使用することの制限を理解しています.memcacheなどの他のより安定したメモリストアがあることを見てきました.どこかで読んだことは、ユーザーがログインしたままアプリを再起動しても生き残ることができると思います-私はそれを正しく理解していますか?

実稼働環境で使用できるメモリ ストアの実装はありますか、それとも mongoDB などの適切な db ストアを使用することをお勧めしますか?

私は、チームの他のメンバーの学習曲線を可能な限り最小限に抑え、本番環境のセットアップとメンテナンスのオーバーヘッドを削減しようとしています。これは、個別のデータベース ストアを使用することで十分に実現できます。

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

node.js - 内部 500 エラー - Node.js - express-session

何らかの理由でサーバーをコンパイルすると、すべてのパスで 500 エラーが発生します。

私が遊んでいたのは「エクスプレスセッション」だけです。私がフォローしているいくつかのチュートリアルがありますが、それらはすべて古い高速バージョン用であるため、いくつかを書き直す必要があり、多くのことを行っていませんが、セッションを初期化しています。

私のapp.jsで唯一変わったこと:

ありがとうございました!

0 投票する
4 に答える
16066 参照

mongodb - エラー: 接続戦略が見つからない MongoDB

これは、エクスプレスセッションストアを使用するための簡単な接続です。テキストが本から正しい場合でも、このエラーが発生し続けます。「新しいMongoStore」オブジェクトの初期化と関係があると確信しています。

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

node.js - socket.io ハンドシェイク Cookie を解析する方法

エクスプレス セッションと一緒に socket.io を使用しています。次のように、ミドルウェアを使用してヘッダーに Cookie を取得しています。

}); これにより、コンソールに次のように表示されます。

わかりました、素晴らしいです!これで Cookie を取得できましたが、そこから情報を取得するにはどうすればよいでしょうか。私は完全に混乱しています。

私のセッションは次のように初期化されます。

}));

簡単な説明を広範囲に検索しましたが、見つかりませんでした。sessionStore を使用する必要がありますか? もしそうなら、なぜですか?これを処理するように設定されていると思われるさまざまなモジュールを試しましたが、これまでのところどれも機能していません。私はMongoDBを使用しているので、必要に応じてそこに保存してもかまいませんが、Redisを使用して他の人が行っているようにこれを処理することは避けたいです。

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

express - 私の情報が「memcached」から削除される理由

現在、memcached + connect-memcached + express-sessionを使用して、ユーザー情報をライフサイクル中に一時的に保存しています。

しかし、最近、ユーザー情報が非常に速く削除されていることがわかりました。その理由はわかりません。次のように起こりました。

  1. ユーザー名とパスワードでログインします。設定7により、ユーザー情報は数日間保存される必要がありますexpress-sessioncookie: { maxAge: 86400000 * 7 }
  2. ログイン後、しばらくマウスとキーボードを離してください(1分程度)
  3. ユーザー情報が必要な Web ページ上の何かをクリックしてみてください
  4. ノードコードを掘り下げている間、セッションIDがCookieに設定されているため、memcached何も返されず、keyほとんど殺されませんでした。

この動作に関するドキュメントが見つかりませんでした。誰か助けてもらえますか?

有効期限が切れていないのになぜ情報が削除されるのか知りたいのですが?

それについて説明されているドキュメントが見つからなかったとしても、オプションを指定2000しました(メモリ使用量である必要があると思いました)。-mmemcached