繁体   English   中英

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

[英]Can I access cookie from ejs page in server-side not the browser-side?

我需要例行检查环境下的登录状态 - node.js、express、ejs。

我想我需要在服务器端而不是浏览器端检查所有 ejs 视图页面中的登录状态。

为此,我想我需要在 ejs 页面中编写一个代码来查找并查看 cookie - 这个 cookie 证明用户已正确登录。

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

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

我可以使用 ejs 中的 cookie-parser 模块吗?

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

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

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

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 文件中相应地编写您的逻辑。 假设您想在用户未登录时显示登录信息并在登录时显示登录信息,您可以添加如下代码

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

浏览器 Cookie 值可以在req.headers.cookie找到。

例如:

在控制台打印 cookie:

router.get("/example"), (req, res) => { console.log(req.headers.cookie); }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM