我正在使用nodejs(express)和mongodb,我试图弄清楚cookie是如何工作的。我目前能够让用户登录并验证它。我如何使用cookie进行播放,以及如何使用cookie查询mongodb以获取用户的信息,以便在登录后将其拉到下一页和页面。
目前我有一个发布登录请求的路由文件,然后根据成功重定向到userProfile页面,我想在该页面上包含用户特定的详细信息,然后能够向用户显示其他页面并让他返回他的查询时再次显示唯一页面。
更新的代码:(可以在更新的代码中调用cookie吗?)
登录路径后文件
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 :(得分:2)
首先阅读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标志后跟重定向。