【问题标题】:Empty object with req.session in cookie session express packagecookie session express 包中带有 req.session 的空对象
【发布时间】:2018-10-30 20:40:57
【问题描述】:

我试图解决这个问题很长时间了。我正在尝试使用快速 cookie 会话进行 cookie 会话并在前面做出反应。 Cookie 应该在我的 req.session 对象中,但它是空的。

这是我的代码:

const cookieSession = require('cookie-session');
const express = require('express');
const app = express();
const cookieParser = require('cookie-parser'); 
const bodyParser = require('body-parser');
const keys = require('./config');


app.use(express.urlencoded({ extended: true }));
app.use(bodyParser.json());


app.set('trust proxy', 1);

app.use(cookieSession({
  name: 'session',
  maxAge: 3000000,
  keys: ['key1', 'key2']
}))

app.get('/t', function (req, res) {

 // here I'm expecting to get cookie object
  res.send(req.session);

})


require('./routes/tasksRoutes')(app);
require('./routes/checkAnswers')(app)

app.listen(5000);

你能帮我解决那个问题吗?为什么我得到空对象? 谢谢各位!

【问题讨论】:

  • 你在哪里设置cookie?
  • 这不是我可能误解 cookie 概念的地方。我以为 app.use(coockieSession...) 设置了 cookie。但显然这不是真的。那么如何设置 cookie 呢?
  • 你需要为用户定义cookie,比如在服务器上,你需要为用户设置它
  • 你可能也想看看这个question

标签: node.js express session-cookies cookie-session


【解决方案1】:

你需要设置cookie,你所做的是配置它,现在你需要设置它才能使用它

const cookieSession = require('cookie-session');
const express = require('express');
const app = express();
const cookieParser = require('cookie-parser'); 
const bodyParser = require('body-parser');
const keys = require('./config');


app.use(express.urlencoded({ extended: true }));
app.use(bodyParser.json());


app.set('trust proxy', 1);

app.use(cookieSession({
  name: 'session',
  maxAge: 3000000,
  keys: ['key1', 'key2']
}))

// now when you'd hit this URL your user will have a cookie attached to it.
app.get('/s', function (req, res) {
    res.cookie('cookieName', 'cookieValue')
});

app.get('/t', function (req, res) {
// you'd be able to see your cookie object here after hitting '/s' API
 // here I'm expecting to get cookie object
  res.send(req.session);

})


require('./routes/tasksRoutes')(app);
require('./routes/checkAnswers')(app)

app.listen(5000);

【讨论】:

  • 谢谢!我现在可以设置 cookie,我在标题中看到它,但在请求“/t”路由时仍然无法接收它。
  • 你用什么来测试API!?
  • @Barth 如果您使用的是 POSTMAN 或类似的东西,它不会保持会话。
猜你喜欢
  • 2019-01-19
  • 1970-01-01
  • 2014-01-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-17
  • 2014-06-27
  • 2021-11-18
相关资源
最近更新 更多