Nodejs express生成的项目中使用会话的问题

Nodejs express生成的项目中使用会话的问题

想在express生成的项目中增加会话 首先写了这么一句 app.use(express.cookieParse());

显示cookieParse已经不跟express一起添加了 所以npm了一下 也加了session的依赖 "dependencies": { “express”: “~4.9.0”, “body-parser”: “~1.8.1”, “cookie-parser”: “~1.3.3”, “morgan”: “~1.3.0”, “serve-favicon”: “~2.1.3”, “debug”: “~2.0.0”, “jade”: “~1.6.0”, “session”: “0.1.0”, “connect”: “3.3.4” } 我查了下 有这样一个用法 app.use(connect.session({ secret: ‘my secret string’, key: ‘my secret string’, cookie: { maxAge: 360000 }

})); 发现不管用 意思估计是connect也不包括session了 要不就是我connect中调用创建session的函数不对

或者可以直接调用session的创建函数 类似 session({ secret:‘my secret string’, maxAge: 360000 })

求大神解答下


3 回复

好像可以了 var session = require(‘express-session’) app.use(session({ secret: ‘my secret string’, maxAge: 3600000 })); 行了
我要是单独require(‘session’)呢 var session = require(‘session’) 应该怎么使用session呢


Node.js Express生成的项目中使用会话的问题

在Express生成的项目中使用会话时,可能会遇到一些问题。首先,需要确保正确安装和配置相关的中间件。

步骤1:安装必要的依赖

首先,你需要安装express-session库。你可以通过以下命令来安装:

npm install express-session --save

然后,在你的项目中更新package.json文件中的依赖项,确保包含express-session

"dependencies": {
    "express": "~4.9.0",
    "body-parser": "~1.8.1",
    "cookie-parser": "~1.3.3",
    "morgan": "~1.3.0",
    "serve-favicon": "~2.1.3",
    "debug": "~2.0.0",
    "jade": "~1.6.0",
    "express-session": "^1.17.2",
    "connect": "3.3.4"
}

步骤2:配置会话中间件

接下来,你需要在应用中正确配置会话中间件。以下是一个简单的示例:

const express = require('express');
const session = require('express-session');

const app = express();

// 使用会话中间件
app.use(session({
    secret: 'my secret string',
    resave: false,
    saveUninitialized: true,
    cookie: {
        maxAge: 360000 // 会话过期时间(毫秒)
    }
}));

// 示例路由
app.get('/', (req, res) => {
    if (!req.session.views) {
        req.session.views = 1;
    } else {
        req.session.views++;
    }
    res.send(`You have viewed this page ${req.session.views} times.`);
});

// 启动服务器
const PORT = process.env.PORT || 3000;
app.listen(PORT, () => {
    console.log(`Server is running on port ${PORT}`);
});

解释

  • secret: 用于签名会话ID cookie的字符串。
  • resave: 强制将会话保存回存储器,即使它没有被修改。
  • saveUninitialized: 在未初始化的情况下保存会话(例如,用户尚未登录)。
  • cookie: 设置会话cookie的属性,如最大寿命。

通过这种方式,你可以轻松地在Express项目中使用会话功能,并且可以跟踪用户的访问次数等信息。

希望这些信息对你有所帮助!如果你有任何其他问题,请随时提问。

在Express 4.x版本中,express.cookieParser() 已经被移除,并且 connect.session() 也需要更新使用方式。为了在Express项目中使用会话功能,你需要使用 express-session 这个中间件。

以下是详细的步骤和代码示例:

  1. 安装 express-session

    npm install express-session --save
    
  2. 在你的应用文件(如 app.jsserver.js)中配置会话中间件:

const express = require('express');
const session = require('express-session');

const app = express();

// 配置会话中间件
app.use(session({
    secret: 'your_secret_key', // 用于加密会话数据的密钥
    resave: false,             // 即使会话未修改也强制保存
    saveUninitialized: true,   // 即使没有初始化会话也保存
    cookie: { 
        maxAge: 3600000         // 会话过期时间(毫秒)
    }
}));

// 其他中间件和路由配置
app.get('/', (req, res) => {
    if (req.session.views) {
        req.session.views++;
        res.setHeader('Content-Type', 'text/html');
        res.write(`<p>Views: ${req.session.views}</p>`);
        res.end();
    } else {
        req.session.views = 1;
        res.end('Welcome to the session demo. Refresh!');
    }
});

const PORT = process.env.PORT || 3000;
app.listen(PORT, () => {
    console.log(`Server is running on port ${PORT}`);
});

在这个示例中:

  • 使用 express-session 中间件来设置会话。
  • secret 是一个字符串,用来加密会话数据,确保安全性。
  • resavesaveUninitialized 参数是可选的,但通常建议保留它们。
  • cookie.maxAge 设置了会话的过期时间。

通过这种方式,你可以成功地在Express项目中启用和使用会话功能。

回到顶部