2

nodejsとconnectに問題があり、リクエスト間でセッション変数が保持されていないという事実があります。今のところ、セッションを保存するためにデータベースを使用したくありません。MemoryStoreを使いたいだけです。

私のサーバー:

var server = connect()
.use(connect.cookieParser('justmeknowsthis'))
.use(connect.session({ cookie: { maxAge: config.data.sessionTimeout /* 1800000 */ }}))
.use(auth.authorize)
.use(routes.routes)
.use(function(req, res, next) {
    utils.data.returnJsonError(res, 404, true, {
        message: 'Call not supported'
    });
});

私は次のようなセッション変数を設定しています:

req.session.auth = true;
req.session.username = data.username;

この問題に関する詳細情報を見つけた後、タイムアウトを増やすだけで動作を開始するタイムゾーンに関係している可能性があることに気付きました。ASP.Netを使用した過去の経験から、問題を気にしていないように見えるため、これまでこの問題に遭遇したことはありません。

この問題を回避するにはどうすればよいですか?

4

1 に答える 1

1

Ok。それで、最終的にそれを行う方法を理解しました。UTCでサーバーを実行していないことについて私がどれほど愚かであるかについて多くを読んだ後、私はそれを試してみることにしました。私はubuntuを使用していますが、Cookieを正しく機能させるための解決策は次のとおりです。

走る:

sudo dpkg-reconfigure tzdata

「地理的領域」のリストから「その他」を選択しますUTCを選択し、Enterキーを押します

更新 サーバーの時間が非常に大きく変動していることに気づきました(仮想マシン)。そのため、時間を適切に維持するためにntp-daemonも使用する必要がありました。セットアップは以下のとおりです。

sudo apt-get install ntp

初めて手動で更新できるようにするには、ntp-daemonを停止する必要があります。サーバーを再起動することもできますが、Linuxなので、再起動する必要はありません。以下を実行してデーモンを停止します。

sudo /etc/init.d/ntp stop

サーバー時間を手動で更新します( http://www.pool.ntp.org/en/から近くのサーバーを使用します)。

ntpdate ntp.ubuntu.com pool.ntp.org

デーモンを再起動するだけです。

sudo /etc/init.d/ntp start

また、ファイル/etc/ntp.confを更新し、ローカルタイムサーバーを含めます。

もう一度更新 1日を実行した後、時間がまだオフになっていることに気付きました。VMマシンのUTCオプションをオフにしました。残念ながら、これには再起動も必要です。

于 2012-04-09T14:42:28.960 に答える