Nodejs express 保存 session 到 mongodb
Nodejs express 保存 session 到 mongodb
npm install mongosessionstore github: https://github.com/lodengo/MongoSessionStore.git store session in mongodb for express 参考: https://github.com/kcbanner/connect-mongo
usage:
//session store: app.use(express.session({ cookie: { maxAge: 2 * 60 * 1000 } ,secret: “session secret” ,store: new MongoSessionStore({mongodb_connection_url:“mongodb://127.0.0.1:27017/test”, mongoclient_connect_options:{}}) }));
//session set: req.session.name = ‘MongoSessionStore’;
//session get: var name = req.session.name;
//session destory req.session.destroy();
mongodb_connection_url, see: http://mongodb.github.com/node-mongodb-native/driver-articles/mongoclient.html http://docs.mongodb.org/manual/reference/connection-string/
session expire see: http://docs.mongodb.org/manual/tutorial/expire-data/
dependencies: “mongodb”:“1.2.8”, “express”: “3.0.3”
Node.js Express 保存 Session 到 MongoDB
引言
在使用 Node.js 和 Express 构建 Web 应用程序时,我们常常需要管理用户会话。通过将会话数据存储在 MongoDB 中,我们可以实现更持久、可靠的会话管理。本文将介绍如何使用 MongoSessionStore
将 Express 的会话数据保存到 MongoDB。
安装依赖
首先,确保安装了以下依赖项:
npm install express mongodb mongosessionstore --save
示例代码
1. 初始化项目
创建一个新的 Express 项目,并引入所需的模块:
const express = require('express');
const MongoSessionStore = require('mongosessionstore').SessionStore;
const session = require('express-session');
const app = express();
2. 配置 MongoDB 连接
配置 MongoDB 的连接信息,并设置会话存储:
const options = {
url: 'mongodb://127.0.0.1:27017/mydatabase',
mongoCollection: 'sessions'
};
app.use(session({
secret: 'your_secret_key',
resave: false,
saveUninitialized: true,
cookie: { maxAge: 2 * 60 * 1000 },
store: new MongoSessionStore(options)
}));
这里,url
是 MongoDB 的连接字符串,mongoCollection
是会话数据存储的集合名称。
3. 设置和获取会话数据
接下来,你可以设置和获取会话数据:
app.get('/', (req, res) => {
req.session.name = 'MongoSessionStore';
res.send(`Hello, ${req.session.name}`);
});
app.get('/get-session', (req, res) => {
var name = req.session.name;
res.send(`Session name is ${name}`);
});
4. 销毁会话
最后,销毁会话数据:
app.get('/destroy-session', (req, res) => {
req.session.destroy((err) => {
if (err) {
return res.status(500).send('Error destroying session');
}
res.send('Session destroyed successfully');
});
});
总结
通过上述步骤,你可以轻松地将 Express 的会话数据保存到 MongoDB 中。这种方式不仅提供了持久化的存储,还允许你更灵活地管理和查询会话数据。希望这篇文章对你有所帮助!
参考资源
为了将 Express 的 session 保存到 MongoDB 中,你可以使用 connect-mongo
库。以下是如何配置和使用的示例。
首先安装所需的库:
npm install express connect-mongo mongodb
然后,你可以设置一个简单的 Express 应用来保存 session 到 MongoDB:
// 导入所需模块
const express = require('express');
const session = require('express-session');
const MongoStore = require('connect-mongo')(session);
const mongoose = require('mongoose');
// 初始化应用
const app = express();
// 连接到 MongoDB
mongoose.connect('mongodb://127.0.0.1:27017/mydatabase', { useNewUrlParser: true, useUnifiedTopology: true });
// 配置 session 中间件
app.use(session({
secret: 'your-secret-key',
resave: false,
saveUninitialized: false,
cookie: { maxAge: 2 * 60 * 1000 }, // 2分钟过期
store: new MongoStore({
mongooseConnection: mongoose.connection
})
}));
// 设置 session 数据
app.get('/set-session', (req, res) => {
req.session.name = 'MongoSessionStore';
res.send('Session set successfully!');
});
// 获取 session 数据
app.get('/get-session', (req, res) => {
const name = req.session.name;
res.send(`Session name is ${name}`);
});
// 销毁 session
app.get('/destroy-session', (req, res) => {
req.session.destroy((err) => {
if (err) return res.status(500).send('Error destroying session');
res.send('Session destroyed successfully!');
});
});
// 启动服务器
app.listen(3000, () => {
console.log('Server running on port 3000');
});
解释
- 导入模块:我们导入了
express
,express-session
,connect-mongo
, 和mongoose
。 - 连接到 MongoDB:使用
mongoose
连接到 MongoDB 数据库。 - 配置 session 中间件:使用
express-session
和connect-mongo
将 session 存储到 MongoDB。 - 设置 session 数据:通过
/set-session
路由设置 session 数据。 - 获取 session 数据:通过
/get-session
路由获取 session 数据。 - 销毁 session:通过
/destroy-session
路由销毁 session。 - 启动服务器:在端口 3000 上启动 Express 服务器。
这样,你就成功地将 session 存储到了 MongoDB 中,并可以进行读写操作。