【发布时间】:2016-02-08 22:55:28
【问题描述】:
我有一个 AngularJS 客户端使用 $http() 函数将 POST 表单数据发送到 Express 服务器。我希望服务器在保存用户电子邮件地址的客户端中设置一个 cookie。这就是我要存储的全部内容,因此我不需要更强大的服务器端会话。我只是在使用cookie-session 模块。
问题: cookie 没有保存在客户端中。来自同一客户端的后续请求显示一个空会话变量。
我已经看到example here 并在设置cookie 后使用req.session.save(),但它仍然不起作用。
服务器代码:
// server.js
var express = require('express');
var app = express();
var bodyParser = require('body-parser');
var cookieParser = require('cookie-parser');
var cookieSession = require('cookie-session')
var methodOverride = require('method-override');
// Configuration
app.use(bodyParser.urlencoded({'extended':'true'}));
app.use(bodyParser.json());
app.use(bodyParser.json({ type: 'application/vnd.api+json' }));
app.use(methodOverride('X-HTTP-Method-Override'));
var express = require('express');
var app = express();
// Cookies
app.use(cookieParser());
app.use(cookieSession({
name: 'session', // what should this name match?
resave: true,
saveUninitialized: true,
keys: ['key1', 'key2'] // what do these values need to match?
}));
app.use(function(req, res, next) {
// Create a cookie.
console.log("Session user [before set]: %j", req.session);
req.session.mycookie = "sample data"; // simplified example for illustration
console.log("Session user [after set]: %j", req.session);
// Save session cookie
req.session.save();
});
app.listen(3000);
每个来自同一个客户端的请求都会给出输出:
Session user [before set]: {}
Session user [after set]: {"mycookie":"sample data"}
客户端的后续测试表明 cookie 没有持久化。我什至使用 Firefox 的“查看 Cookies”插件来检查是否创建了任何 cookie,但没有。
1.为什么我的 cookie 没有持久化?我是 Express 的新手,所以我可能会遗漏一些明显的东西。
2。我是否使用正确的参数来创建 cookieSession? 我不确定 keys 或 name 应该是什么。 cookie-session documentation 对此含糊其辞,我在其他地方找不到更好的文档。
【问题讨论】:
标签: node.js session cookies express