场景
我有一个使用 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/