4

セッションを処理するために、nodejs、express、および connect-memcaced を使用しています。毎回完全に実行され、セッションデータを設定し、ユーザーをログイン済みとしてマークし、ログインしたページにリダイレクトするログインスクリプトを作成しました。ときどき (常にではありません) 発生するのは、リダイレクトされてページが Cookie をロードした後、sessionID が変更され、ユーザーがコースから外れてログインしなくなることです。これが発生する理由と、毎回発生しない理由を見つけることができませんでした。

ログイン機能のコード スニペット:

DB.getOne('User',{filters:{'primary':{email:req.body.email}}}, function(err,data){
  if(data[0] && data[0].active == 1){
    var encodedPass = self.encodePass(req.body.pass,req.body.email);
    if(encodedPass == data[0].pass){
      req.session.pr.user = data[0];
      req.session.pr.user.status = true; 
      res.writeHead(302, {
        'Location': goTo 
      });
      res.end();
    }
  }
});

memcached を直接見ると、これが完全に実行され、データが常に元の sessionID で memcached に保存されていることがわかります。何らかの理由で、リダイレクトによってセッション ID が変更されている必要があります

4

1 に答える 1

0

開発サーバーを再起動したことに気付かないときに、これが発生することがよくあります。セッション Cookie はメモリに保存されるため、サーバーを再起動すると、すべてのセッションが失われ、ユーザーに新しいセッションが自動的に割り当てられることに注意してください。

于 2013-03-07T21:11:50.060 に答える