2016-12-09 4 views
0

Ich bin neu bei node.js und versuche, 'express-session' zu verwenden, um eine Sitzung zu erstellen und zu speichern, der Titel ist der Fehler und unten ist mein Code. Ich überprüfe den Quellcode auf github, habe aber keine Frage gefunden. Bitte helfen, vielen Dank.TypeError: Eigenschaft 'regenerate' von undefined kann nicht gelesen werden

User.prototype.login = function (req, res, next) { 

    pool.getConnection(function (err, connection) { 
     // 获取前台页面传过来的参数 
     var user_name = req.param("user_name"), 
      password = req.param('password'); 

     // 建立连接,向表中插入值 
     var select = mysql.format(user_command.login, user_name); 
     connection.query(select, function(err, result) { 
      if(result) { 
       if(result[0].password === password){ 
        req.session.regenerate(function() { 
         if(err){ 
          res.json({ret_code: 2, ret_message:'登陆失败' }); 
         } 
         res.sessionID = user_name; 
         res.json({ret_code: 0, ret_msg: '登录成功'}); 
        }); 
       }else { 
        res.redirect('/login'); 
       } 
      } 
      // 释放连接 
      connection.release(); 
     }); 

    }); 

};

+0

Es gibt keine Funktion 'req.session.regenerate'. Sie versuchen es zu nennen. Error. – nicovank

+0

danke mann, aber die funktion ist im doc von "express-session", deshalb verstehe ich das nicht wirklich. Sie können die Funktion in dem Link suchen: https://github.com/talentAN/session –

+0

Haben Sie irgendwo in Ihrem Code 'app.use (Sitzung ('? – nicovank

Antwort

0

Express-Middleware wird in der Reihenfolge ausgeführt, in der Sie sie definieren. Ihr Problem ist, dass Sie app.use('./', routes) vor app.use(session(...)) gesetzt haben.

Um dies zu beheben, verschieben Sie einfach die erste Zeile nach der zweiten Zeile.

app.use(session({ 
    // ... 
}); 

app.use('./', routes); 
Verwandte Themen