2017-08-05 98 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

相關問題