3

接続の永続セッションに依存するミドルウェアの単体テストを書いています。(つまり、接続モンゴ)。

偽のセッションを作成したいのですが、方法がわかりません。

私はブラウザに connect.sid Cookie を持っています。これは、暗号化された方法でセッション コレクションの _id に関連付けられていると思います。

これが私が試したことです:

cookieParser ミドルウェアとセッション ストアをサーバーに追加し、次の要求を使用してサーバーに送信しました (chrome の開発ツール パネルからキーをコピーしました)。

var jar = request.jar(),
    cookie = request.cookie('connect.sid=<REALLYLONGKEY>');
jar.add(cookie);
request({url : 'http://localhost:8585/',jar : jar},this.callback);

サーバー側で Cookie を正しく設定し、セッションが機能していることを確認しました。

しかし、Cookie からセッションへの魔法の変換は、私が望んでいたようには起こりませんでした。これを行う正しい方法は何ですか?

4

1 に答える 1

1

サーバーでの Cookie の設定は、その ID を持つセッションが存在する場合にのみ機能します。そもそもセッションを作成したのは誰ですか?

私がサーバーで何をしたかをお伝えできます。クライアント側をシミュレートし、リクエストをサーバーに送信するテストを作成したかったのです。クライアントを認証する方法が必要でした。私のサーバーでは、Google OAuth に基づく認証が許可されていました。しかし、クライアントに Google アカウントへのサインインを教えるという面倒なことはしたくありませんでした。

私の解決策は、サーバーにサインインするための別の方法を実装することでした-ユーザー名だけを使用します。この機能はテスト中にのみ有効になり、本番環境では無効になります。テスト クライアントは問題なくサインインできるようになりました。サインインの結果として Cookie 'connect.sid' を受け取り、後続の要求でサーバーに送り返します。

私も request.jar() を使用して、リクエスト用の Cookie jar を作成しました。ただし、これは、同時に複数のクライアントをシミュレートしていて、クライアントごとに個別の Cookie jar が必要な場合にのみ必要であることに注意してください。

于 2012-11-05T19:24:30.213 に答える