2017-08-05 79 views
1

大家好,我是Node新手,请耐心等待。如何在登录后请求用户数据,Node.JS

无论如何,我目前正在为我的新节点应用程序的身份验证工作。到目前为止,我能够完成一切基本工作(登录,注册,注销)。我现在进入我的用户个人资料的设置页面,但我无法访问{{username}}或{{email}},例如,它保留空白或抛出错误。

我想知道如何让用户名,电子邮件和其他信息保留在会话中,或者一旦我的用户登录后就可以访问它,以及以后如何向会话添加更多信息(这很重要,因为我需要这样做)。

这里是我的代码:

登记(不包括验证)

var newUser = new User({ 
      username: username, 
      email:email, 
      password: password 
     }); 

User.createUser(newUser, function(err, user){ 
      if(err) throw err; 
      console.log(user); 
      req.flash('success_msg', 'You are registered and can now login'); 

登录:

router.post('/login', 
    passport.authenticate('local', {successRedirect:'/', failureRedirect:'/users/login',failureFlash: true}), 
    function(req, res) { 
    res.redirect('/'); 
    }); 

我不知道我需要什么代码来显示,但如果你人们需要看到其他东西来帮助我,请让我知道。

我使用Node.JS与快递,护照和车把。

谢谢!

+0

,是你的幸运日。我需要upvote成就:P – Spacemoose

回答

1

我不知道我怎样才能使用户名,电子邮件和其他信息留在会议或能够访问它 一旦我的用户登录,以及如何 以后我可以向会话中添加更多的信息(这很重要,因为我需要这样做)。

没有为这种使用情况相当不错NPM模块:

https://github.com/expressjs/session

我已经取得了相当不错的经验吧。

通过NPM,然后只要安装它:

var session = require('express-session') 

这是你如何使用它:

// Use the session middleware 
app.use(session({ secret: 'keyboard cat', cookie: { maxAge: 60000 }})) 

// Access the session as req.session 
app.get('/', function(req, res, next) { 
    if (req.session.views) { 
    req.session.views++ 
    res.setHeader('Content-Type', 'text/html') 
    res.write('<p>views: ' + req.session.views + '</p>') 
    res.write('<p>expires in: ' + (req.session.cookie.maxAge/1000) + 's</p>') 
    res.end() 
    } else { 
    req.session.views = 1 
    res.end('welcome to the session demo. refresh!') 
    } 
}) 
+0

谢谢,我可以看到你的例子正在工作。我想知道如何将它实现为将会话变量(如用户名等)保存在另一个文件中。就像我将如何添加用户名到会话是users.js例如? – Jakob

+0

你可以保存任何你想要的会话/ cookie。您通常想要做的是将您的用户名与Cookie ID相关联。 – Spacemoose

+0

我很抱歉不断提问,但我真的很失落。我会怎么做呢?如果我尝试使用让说req.session.user或用户名它告诉我req是未定义的。我不知道是否必须重新启动会话,或者如何在用户登录后将用户名和电子邮件添加到会话......感谢您的帮助。 – Jakob

相关问题