0
申し訳ありませんが、私は英語が話せません。 LOGIN = => welcome.ejs => OKハローのuser_id < =それは成功だときNodejs/expressとejs:rendering
私は
にしようとします!
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'を前に置くのか不明です –