【问题标题】:How to use cookieSession in express如何在 express 中使用 cookieSession
【发布时间】:2013-06-17 15:00:17
【问题描述】:

我正在尝试使用内置的cookieSession 连接对象,但我无法让它与 express 一起正常工作。

我有这个应用程序:

var express = require('express');
var connect = require('connect');

var app = express.createServer();

app.configure(function() {
  app.use(express.logger());
  app.use(express.bodyParser());
  app.use(express.methodOverride());
  app.use(express.cookieParser('whatever'));
  app.use(connect.cookieSession({ cookie: { maxAge: 60 * 60 * 1000 }}));
});

app.get('/', function(req, res) {
    res.render('root');
});

app.listen(3000);

我收到此错误:

TypeError: Cannot read property 'connect.sess' of undefined
    at Object.cookieSession [as handle] 

有什么想法吗?

谢谢

【问题讨论】:

  • 您使用 connect.cookieSession 而不是 express.cookieSession 的任何特殊原因?
  • @AndersBornholm 这个问题已经很老了,当时可能不可用

标签: node.js express connect


【解决方案1】:

除非您按以下顺序设置这 3 个,否则会话将无法工作:

app.use(express.cookieParser());
app.use(express.cookieSession());
app.use(app.router);

在那之后工作就像一个魅力。

见:https://stackoverflow.com/a/10239147/2454820

【讨论】:

  • 我收到错误:secret cookie 会话需要选项
  • 只需添加一个秘密:app.use(express.cookieSession({secret:'mysecret'}));
  • 删除app.use(app.router),它对我有用。 (也不得不添加秘密)
【解决方案2】:

您的connect 模块的版本是多少? cookieSession 中间件最初是在 2.0.0 版本中添加的。运行 npm list|grep connect 以确保您的 connect 版本至少为 2.0.0 或更高版本。

【讨论】:

  • Express 带有 connect 1.8.6,所以是的,这可能就是它无法正常工作的原因。谢谢
  • Express 3 自带 connect 2.7。
【解决方案3】:

我也有这个问题。原来everyauth 是与connect 1.7.5 链接的模块之一,在npm remove everyauth 之后,所有问题都消失了。

【讨论】:

    猜你喜欢
    • 2013-09-01
    • 2023-03-19
    • 2013-03-08
    • 2013-03-22
    • 2013-05-04
    • 2012-12-14
    • 2016-02-25
    • 2013-10-01
    相关资源
    最近更新 更多