2013-07-03 86 views
0

我正在用mongodb使用nodejs(express),我試圖弄清楚cookie是如何工作的。我目前能夠讓用戶登錄並進行身份驗證。如何啓用cookie以及如何使用cookie在用戶的信息中查詢mongodb,以便在登錄後將其拉到下一頁和其後的頁面中。如何在nodejs和mongodb中使用cookie?

目前我有一個路由文件發佈登錄請求,然後根據成功重定向到userProfile頁面,我想在該頁面上包含用戶特定的詳細信息,然後能夠顯示用戶其他頁面並讓他返回到他在查詢時再次瀏覽他的獨特頁面。

更新的代碼:(?能瀏覽器來把它稱爲是所謂的更新代碼的方式)

登陸後路徑文件

exports.loginPost = function(req, res, next) { 
    passport.authenticate('local', function(err, user, info) { 
     if (err) { return next(err) } 
     if (!user) { return res.redirect('loginError'); } 
     req.logIn(user, function(err) { 
      if (err) { return next(err); }  
      res.cookie('name', req.params.email, { expires: new Date(Date.now() + 900000), httpOnly: true });  
      return res.redirect('userProfile'); 
     }); 
    })(req, res, next); 
}; 
+0

嘗試使用cookieParser http://expressjs.com/api.html#cookieParser – AntouanK

+0

我明白,但例如我有一個cookieparser從我的主要app.js文件表達。我如何設置它,以及登錄時必須在哪裏設置?我怎麼用它來查詢呢?如果可以顯示一個很好的例子,我附上我的代碼。 – Lion789

+0

我有同樣的問題,因爲明確的文件是...最小。嘗試谷歌它,看看例子。 – AntouanK

回答

1

讀這首What does middleware and app.use actually mean in Expressjs?

然後使用cookieparser和cookiesession

app.use(express.cookieParser('yoursecretkeyhere')); 
app.use(express.cookieSession(); 

並拆分您的上述功能轉換爲認證中間件方法和認證POST處理程序。

您的身份驗證中間件只需檢查會話是否有Authenticated標誌,如果不是重定向到您的登錄頁面。 (如果這是單頁面應用程序的一部分,只需返回一個401並在您的瀏覽器中索要憑據)

您的身份驗證POST處理程序然後檢查發佈的用戶名和密碼憑證(或針對第三方API的其他憑證)和設置session.Authenticated標誌,然後是重定向。

+0

我不能只是堅持它在登錄帖子是這樣的:res.cookie('name',req.params.email,{expires:new Date(Date.now()+ 900000),httpOnly:true });認證之後。 – Lion789

+1

不知道我明白。 cookieSession是中間件,它將任何添加到會話對象中的內容存儲到加密的cookie中。您的瀏覽器會根據每個請求將cookie發送到您的服務器,cookieSession會讀取它並將所有值填充到您的會話中。你不應該把東西放在一個應該防篡改的未加密的cookie中。 – AndyD