【问题标题】:Nodejs/express and ejs : renderingNodejs/express 和 ejs:渲染
【发布时间】: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


【解决方案1】:

将欢迎文件更改为:

<% if (user) { %>

而不是

<% if (user.id) { %>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-07-05
    • 2012-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-12
    • 1970-01-01
    • 2015-07-17
    相关资源
    最近更新 更多