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”


2 回复

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');
});

解释

  1. 导入模块:我们导入了 express, express-session, connect-mongo, 和 mongoose
  2. 连接到 MongoDB:使用 mongoose 连接到 MongoDB 数据库。
  3. 配置 session 中间件:使用 express-sessionconnect-mongo 将 session 存储到 MongoDB。
  4. 设置 session 数据:通过 /set-session 路由设置 session 数据。
  5. 获取 session 数据:通过 /get-session 路由获取 session 数据。
  6. 销毁 session:通过 /destroy-session 路由销毁 session。
  7. 启动服务器:在端口 3000 上启动 Express 服务器。

这样,你就成功地将 session 存储到了 MongoDB 中,并可以进行读写操作。

回到顶部