我可以从服务器端而不是浏览器端的ejs页面访问cookie吗?

我需要做一个例程来检查环境下的login状态 – node.js,express,ejs。

我想我需要在服务器端的所有ejs查看页面中检查login状态,而不是在浏览器端。

要做到这一点,我认为我需要在ejs页面上编写一个代码,查找并查看一个cookie – 这个cookiecertificate用户已经正确login。

我可以从ejs页面访问浏览器cookie吗?

如果是这样,你能指导我如何从ejs页面访问cookie吗?

我可以使用ejs中的cookieparsing器模块吗?

如果没有办法从ejs页面的服务器端访问cookie,我相信我只需要在浏览器端访问cookie。 这是正常的方式来处理login?

所以你想跟踪用户的会话。 您可以执行以下操作来实现此目的。

用户使用正确的凭据成功login后,将该用户详细信息添加到会话中。

if(loginSuccess){ req.session.user = userObject; } 

添加一个中间件从会话中读取用户,并将其放入res.locals中,以便可以访问ejs文件中的userObject。

 app.use(function(req, res, next) { res.locals.user = req.session.user; next(); }); 

现在你将在你的ejs文件中有userObject,所以把你的逻辑写在ejs文件中。 比方说,如果你想在用户未login时显示login,login时登出,你可以添加如下所示的代码

  <% if(user && user.email){ %> <a href="/logout">Logout</a> <% } else { %> <a href="/login">Login</a> <% } %>