javascript - 服务前处理 Cookie

标签 javascript node.js cookies express

场景

我有一个使用 Express 框架的简单 NodeJS 服务器。我有一些需要提供服务的 ReactJS 页面。目前没有同构。

在提供服务之前,我想检查用户是否有特定的 cookie,然后根据该信息创建一个新的 cookie。

我尝试过的

这是我的 server.js 文件的代码。

var express = require("express");
var app = express();
var Cookies = require("cookies");

app.use(function(req, res){
  var cookies = new Cookies( req, res);
  var userCookie = cookies.get("sso");
  var isLoggedIn = cookies.get("isLoggedIn");

  if(userCookie !== undefined && isLoggedIn === false){
    cookies.set("isLoggedIn", true);
  }
});


app.use(express.static(__dirname + '/build'));

var port = process.env.PORT || 8080;
app.listen(port, function() {
  console.log("Listening on " + port);
});

因此,我使用 express.static 来提供 build 文件夹中的静态文件。

我尝试将 app.use(express.static(__dirname + '/build')); 行移至上一个 app.use 上方,但随后代码永远不会进入 cookie 部分。

我尝试过这个简单的事情。即使这样也不起作用。我可以看到日志 hello,但该网站无法正常工作。

var express = require("express");
var app = express();

app.use(function(req, res){
  console.log("hello");
});

app.use(express.static(__dirname + '/build'));

var port = process.env.PORT || 8080;
app.listen(port, function() {
  console.log("Listening on " + port);
});

最佳答案

您使用 cookie 时出现问题。您正在检查 cookie 值 isLoggedIn 是否为 bool 值,=== false。但 cookie 始终是字符串,因此比较始终为 false,并且您永远不会将 isLoggedIn 设置为 "true"

如果您更新代码以将值视为字符串,它可能会起作用。尝试这样的事情:

if(userCookie !== undefined && isLoggedIn !== "true"){
  cookies.set("isLoggedIn", "true");
}

关于javascript - 服务前处理 Cookie,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33968297/

相关文章:

javascript - React-Native-Navigation:未定义已使用但尚未注册

javascript - jQuery .contains(+数字)

javascript - 文档就绪功能 - 添加提交按钮

node.js - 在 node.js 上访问 express 应用程序 Controller 中的 app.set 设置

清除浏览器Cookie后,django不会再次发送csrf token

javascript - 以 Express 方式跨域传输 Cookie

jquery - 如何检查一个链接是否被访问过?

javascript - 如何创建 javascript 徽章或小部件?

node.js - 在 Visual Studio Code 中调试输出 nodejs

node.js - Mongoose 不创建索引