节点 JS 会话错误:不推荐使用 express-session
Posted
技术标签:
【中文标题】节点 JS 会话错误:不推荐使用 express-session【英文标题】:Node JS session error: express-session deprecated 【发布时间】:2015-05-04 13:27:01 【问题描述】:我的节点 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: genuuid 未在 app.use.session.genid 中定义
【问题讨论】:
express 4.0 , express-session with odd warning message的可能重复 【参考方案1】:来自express 4.0 , express-session with odd warning message
正如警告所说,默认值会发生变化,因此他们希望通过现在明确设置值来确保在默认值发生变化时(在不久的将来)不会遇到意外行为。
app.use(session(
secret: cookie_secret,
resave: true,
saveUninitialized: true
));
【讨论】:
【参考方案2】:您必须在某处定义genuuid
函数。 express-session
自述文件假设你已经实现了。
关于警告,您需要在会话配置对象中明确设置resave
和saveUninitialized
选项。
【讨论】:
“快速会话自述文件假设您已经实现了它。”为什么他们会假设那样!?那为什么不叫它write_your_uuid_func_here()
呢?无论如何,如果您没有特定的理由需要 UUID 格式,这确实很好:require('crypto').randomBytes(48).toString('hex');
您还可以安装各种 npm
包来执行 UUID。【参考方案3】:
添加这些标志-
resave: true,
saveUninitialized: true
在您的内部 - app.use(session();
它应该可以正常工作。
【讨论】:
那么这样模块本身会生成一个 UUID 对吗?谢谢【参考方案4】:用这个,希望对你有帮助
app.use(session(
name : 'codeil',
secret : 'something',
resave :false,
saveUninitialized: true,
cookie :
maxAge:(1000 * 60 * 100)
));
【讨论】:
嗨,拉维·钱多拉,欢迎您。请考虑正确格式化答案。【参考方案5】:添加
resave: true,
saveUninitialized: true
到您的会话中间件
【讨论】:
【参考方案6】:app.use(session( secret: 'anything', resave: true, saveUninitialized: true ));/
【讨论】:
【参考方案7】:如果您使用maxAge
作为会话 cookie 持续时间:
app.use(session(
secret: '<session_secret>',
resave: true,
saveUninitialized: true,
maxAge: 3600000 // 1 hour (in milliseconds)
));
【讨论】:
【参考方案8】:您必须使用新版本的 express 并在应用中的某处定义 genid 函数或使用 uuid 改为打包
【讨论】:
【参考方案9】:这是一个弃用警告。这意味着将不支持节点模块快速会话。
【讨论】:
这是不正确且具有误导性的。express-session
包本身并未被弃用,但 OP 使用的某些方面已被弃用(或将被弃用)。以上是关于节点 JS 会话错误:不推荐使用 express-session的主要内容,如果未能解决你的问题,请参考以下文章
每次刷新或访问页面时,Node js express-session都会创建新的会话ID