0
Извините, я не говорю по-английски.Nodejs/express и ejs: рендеринг
Постараюсь
Когда LOGIN = OK => welcome.ejs => привет user_id = < Это успех!
Когда LOGIN = X => welcome.ejs => ВХОДНАЯ ссылка < = Ошибка. Ошибка
сообщение об ошибке: Не удается прочитать свойство «идентификатор» неопределенной
Я не знаю, почему это не так. Как исправить проблему?
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' перед –