节点JS会话错误:不推荐使用快速会话

时间:2015-03-03 18:42:48

标签: javascript node.js session express

我的节点js文件中有以下内容

var express = require('express');
var util = require('./lib/utility');
var partials = require('express-partials');
var bodyParser = require('body-parser');

var session = require('express-session');

/* abstracted some code */

app.use(session({
  genid: function(req) {
    return genuuid(); // use UUIDs for session IDs
  },
  secret: 'keyboard cat'
}));

当我启动服务器时,我得到了

express-session deprecated undefined resave option; provide resave option server.js
express-session deprecated undefined saveUninitialized option; provide saveUninitialized option server.js

我很难搞清楚什么是弃用的?我复制了https://github.com/expressjs/session

中的示例

当我尝试加载页面时,我得到了:

  

ReferenceError:app.use.session.genid

中未定义genuuid

9 个答案:

答案 0 :(得分:13)

您必须在某处定义genuuid功能。 express-session自述文件假设您已经实现了这一点。

关于警告,您需要在会话配置对象中明确设置resavesaveUninitialized选项。

答案 1 :(得分:5)

使用此功能,希望对您有所帮助

app.use(session({
    name : 'codeil',
    secret : 'something',
    resave :false,
    saveUninitialized: true,
    cookie : {
            maxAge:(1000 * 60 * 100)
    }      
}));

答案 2 :(得分:3)

来自express 4.0 , express-session with odd warning message

正如警告所说,默认值会发生变化,因此他们希望确保通过现在明确设置值,当默认值发生变化时(在不久的将来),您将不会遇到意外行为。

app.use(session({
    secret: cookie_secret,
    resave: true,
    saveUninitialized: true
}));

答案 3 :(得分:2)

添加这些标志 -

resave:是的, saveUninitialized:true

在你的app.use(session({})中; 它应该工作正常。

答案 4 :(得分:2)

app.use(session({ secret: 'anything', resave: true, saveUninitialized: true }));/

答案 5 :(得分:0)

如果您将app.use(session({ secret: '<session_secret>', resave: true, saveUninitialized: true, maxAge: 3600000 // 1 hour (in milliseconds) })); 用于会话cookie持续时间:

var response = await _userManager.FindByNameAsync(userName);

答案 6 :(得分:0)

您必须使用新版本的 express ,并在应用中的某个位置定义Genid函数,或使用 uuid 打包

答案 7 :(得分:0)

添加

{
     resave: true,
     saveUninitialized: true
}

到您的会话中间件

答案 8 :(得分:0)

这是一个弃用警告。表示不支持节点模块express session。