如何使每个用户的会话唯一? - Node.js
How to make sessions unique for each user? - Node.js
我目前正在做一个节点项目,我的问题是,如果我在一台计算机上登录该网站,而我在另一台计算机上做同样的事情,我仍然会登录到该帐户。我认为这与制作会话的问题有关 unique.Here 是我用于会话的中间件:
app.use(session({
secret:"HelloWorld"
}));
如果有人想在这里查看节点文件:http://pastebin.com/euatwkNS
如有任何帮助,我们将不胜感激!
您是否尝试过使用 genid
方法。
app.use(session({
genid: function(req) { return uuid(); },
secret:"HelloWorld"
}));
您已经 uuid
导入了。它应该有效。
NOTE be careful to generate unique IDs so your sessions do not conflict.
更多信息见:express-session
您似乎没有指定 express-session 应将会话数据存储在何处。来自 express-session docs:“警告默认的服务器端会话存储 MemoryStore
不是为生产环境设计的。它在大多数情况下会泄漏内存,不会扩展到单个进程,用于调试和开发。"
我不确定他们为什么不在他们的文档中给出正确指定它的示例,但正确的方法应该像我得到的那样:
import express from 'express';
import session from 'express-session';
import connectMongo from 'connect-mongo';
import mongoose from 'mongoose';
const app = express();
... // configure mongoose db and connect
const MongoStore = connectMongo(session);
const month = 1000 * 60 * 60 * 24 * 30; // ms * s * min * h * days
var sess = {
secret: 'session-secret',
resave: false, // don't save session if unmodified
saveUninitialized: false, // don't create session until something stored
cookie: { maxAge: month }, // do not allows js on client to touch cookies
store: new MongoStore({ mongooseConnection: mongoose.connection })
};
app.use(session(sess));
请注意行 store: new MongoStore(...)
,这是指定商店的方式。我为商店使用了 connect-mongo 包,这取决于 mongoose,但我看到你正在使用 monk,我没有看到它被列为现有商店,因此您可能必须创建自己的商店或转而使用 mongoose。 express-session docs.
末尾给出了现有商店的完整列表
我目前正在做一个节点项目,我的问题是,如果我在一台计算机上登录该网站,而我在另一台计算机上做同样的事情,我仍然会登录到该帐户。我认为这与制作会话的问题有关 unique.Here 是我用于会话的中间件:
app.use(session({
secret:"HelloWorld"
}));
如果有人想在这里查看节点文件:http://pastebin.com/euatwkNS
如有任何帮助,我们将不胜感激!
您是否尝试过使用 genid
方法。
app.use(session({
genid: function(req) { return uuid(); },
secret:"HelloWorld"
}));
您已经 uuid
导入了。它应该有效。
NOTE be careful to generate unique IDs so your sessions do not conflict.
更多信息见:express-session
您似乎没有指定 express-session 应将会话数据存储在何处。来自 express-session docs:“警告默认的服务器端会话存储 MemoryStore
不是为生产环境设计的。它在大多数情况下会泄漏内存,不会扩展到单个进程,用于调试和开发。"
我不确定他们为什么不在他们的文档中给出正确指定它的示例,但正确的方法应该像我得到的那样:
import express from 'express';
import session from 'express-session';
import connectMongo from 'connect-mongo';
import mongoose from 'mongoose';
const app = express();
... // configure mongoose db and connect
const MongoStore = connectMongo(session);
const month = 1000 * 60 * 60 * 24 * 30; // ms * s * min * h * days
var sess = {
secret: 'session-secret',
resave: false, // don't save session if unmodified
saveUninitialized: false, // don't create session until something stored
cookie: { maxAge: month }, // do not allows js on client to touch cookies
store: new MongoStore({ mongooseConnection: mongoose.connection })
};
app.use(session(sess));
请注意行 store: new MongoStore(...)
,这是指定商店的方式。我为商店使用了 connect-mongo 包,这取决于 mongoose,但我看到你正在使用 monk,我没有看到它被列为现有商店,因此您可能必须创建自己的商店或转而使用 mongoose。 express-session docs.