0

我正在将 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);
};
4

1 回答 1

1

首先阅读本文中间件和 app.use 在 Expressjs 中的实际含义是什么?

然后使用 cookieparser 和 cookiesession

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

并将您的上述功能拆分为身份验证中间件方法和身份验证 POST 处理程序。

您的身份验证中间件只需要检查会话是否具有 Authenticated 标志,如果没有则重定向到您的登录页面。(如果这是单页应用程序的一部分,只需返回 401 并在浏览器中请求凭据)

然后,您的身份验证 POST 处理程序检查发布的用户名和密码凭据(或针对 3rd 方 api 的其他凭据)并设置 session.Authenticated 标志,然后进行重定向。

于 2013-07-03T15:11:51.487 回答