在Node.js中使用会话的简便方法

时间:2015-11-15 20:08:29

标签: javascript node.js session express

我试图让Node.js中的会话工作,我阅读并尝试了很多关于Node.js中的会话,在PHP中我可以使用$ _SESSION [' key'] = $ value;但我可以找到它在Node.js中的工作方式。

我一直在寻找快速会话,它看起来非常复杂,可以处理cookie,并使用MongoDB或Redis来存储会话。

所以我会问一下somarby可以通过ExpressJS以简单的方式分享样本来处理会话吗?

因为如果我使用快速会话,我需要使用node-uuid来配置我自己的uuid v4密钥。

所以希望我能在这里提供帮助,这是我完成用户登录所需要的。

1 个答案:

答案 0 :(得分:2)

我将express-sessionconnect-mongo一起用于存储MongoDB中的会话。我的代码如下所示:

var express = require('express');
var session = require('express-session');
var mongoStore = require('connect-mongo')({
    session: session
});

var cookieExpiration = 30 * (24 * 60 * 60 * 1000); // 1 month
app.use(session({
    // When there is nothing on the session, do not save it
    saveUninitialized: false,
    // Update session if it changes
    resave: true,
    // Set cookie
    cookie: {
        // Unsecure
        secure: false,
        // Http & https
        httpOnly: false,
        // Domain of the cookie
        domain: 'http://localhost:3001',
        // Maximum age of the cookie
        maxAge: cookieExpiration
    },
    // Name of your cookie
    name: 'testCookie',
    // Secret of your cookie
    secret: 'someHugeSecret',
    // Store the cookie in mongo
    store: new mongoStore({
        // Store the cookie in mongo
        url: 'mongodb://localhost/databaseName',
        // Name of the collection
        collection: 'sessions'
    })
}));

有关快速会话的所有选项,请参阅文档。

现在,您可以将所有会话数据存储在req.session上。您在会话中提供的所有内容也将保存在MongoDB中。确保您从前端发送cookie,否则您的会话将始终为空。