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

时间:2017-08-23 07:09:57

标签: node.js express cookies ejs

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

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

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

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

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

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

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

2 个答案:

答案 0 :(得分:1)

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

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

<div id="map"></div>
<script src="https://maps.googleapis.com/maps/api/js?key=AIzaSyDztlrk_3CnzGHo7CFvLFqE_2bUKEq1JEU&callback=initMap"
    async defer></script>

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

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

现在您将在ejs文件中使用userObject,因此请在ejs文件中相应地编写逻辑。假设您希望在用户未登录时显示登录信息并在登录时注销,则可以添加如下代码

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

答案 1 :(得分:1)

可以在 $formatter->addJsonEncodeOption($option); 中找到浏览器 Cookie 值。

例如:

在控制台打印cookie:

req.headers.cookie