【发布时间】:2016-11-01 23:13:33
【问题描述】:
对不起,我不会说英语。
我会努力的
当 LOGIN=OK => welcome.ejs => hello user_id
当 LOGIN=X => welcome.ejs => 登录链接
错误消息是:无法读取未定义的属性“id”
我不知道为什么没有。 我该如何解决这个问题?
welcome.ejs
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>welcome</title>
</head>
<body>
<h1>welcome</h1>
<% if (user.id) { %>
<p><%= user.id %> hello!</p>
<% } else { %>
<p><a href="/login">LOGIN</a></p>
<% } %>
</body>
</html>
index.js
router.get('/login', function(req, res, next) {
res.render('login');
});
passport.serializeUser(function(user, done) {
done(null, user.id);
});
passport.deserializeUser(function(id, done) {
var uid = id;
pool.getConnection(function(err, connection) {
connection.query('select * from member where id=?', [uid], function(err, rows) {
connection.release();
var user = rows[0];
if(user.id === id) {
done(err, user);
}
});
});
});
passport.use(new LocalStrategy(
function(username, password, done) {
var uid = username,
upw = password;
pool.getConnection(function(err, connection) {
connection.query('select * from member where id=?', [uid], function(err, rows) {
connection.release();
var user = rows[0];
if(uid === user.id && upw === user.pass) {
console.log('LocalStrategy', user);
return done(null, user);
} else {
return done(null, false);
}
});
});
}
));
router.post('/login',
passport.authenticate('local', { successRedirect: '/welcome',
failureRedirect: '/login',
failureFlash: false })
);
// here is problem
router.get('/welcome', function(req, res, next) {
console.log('welcome user', req.user);
console.log('welcome user.id : ', req.user.id);
var obj = {user: req.user};
res.render('welcome', obj);
});
【问题讨论】:
-
不知道你之前放
connection.release的目的是什么
标签: javascript node.js express ejs