我正在使用mysql数据库在express.js中实现登录和注册功能。我的注册逻辑工作正常。但登录无效。相反,它会抛出错误,
TypeError:无法设置未定义的属性“userId” 和 扔错了; //重新抛出非MySQL错误 我的routes / user.login代码如下。
values = self.selector.extract()
和我的login.ejs文件如下。
exports.login = function(req, res){
var message = '';
var sess = req.session;
if(req.method == "POST"){
var post = req.body;
var name= post.user_name;
var pass= post.password;
var sql="SELECT id, first_name, last_name, user_name FROM `users` WHERE `user_name`='"+name+"' and password = '"+pass+"'";
db.query(sql, function(err, results){
if(results.length){
req.session.userId = results[0].id;
req.session.user = results[0];
console.log(results[0].id);
res.redirect('/home/dashboard');
}
else{
message = 'Wrong Credentials.';
res.render('index.ejs',{message: message});
}
});
}else {
res.render('index.ejs',{message: message});
}
};
答案 0 :(得分:1)
似乎您的应用程序中没有安装会话模块。使用以下express-session
命令
npm
npm install express-session
然后require
并在app.js
文件中配置
var expressSession = require('express-session');
app.use(expressSession({secret: 'your secret', saveUninitialized: true, resave: false}));
之后,它应该可以正常工作。