Nodejs session的问题,两个接口共享session的信息,如图

发布于 1周前 作者 nodeper 来自 nodejs/Nestjs

Nodejs session的问题,两个接口共享session的信息,如图

https://ws1.sinaimg.cn/large/005B3bwGgy1fx7g0aesoyj30jm0g1jsv.jpg

https://ws1.sinaimg.cn/large/005B3bwGgy1fx7g0m81clj30g806kt9o.jpg

有 login 和 test 两个接口,使用 postman 先请求 login 登录成功后在请求 test 可以读取到同一个 session,但是在网页上使用两个按钮分别绑定请求 login 和 test 时,点击 login 登录成功后再点击 test 按钮时读取到的 session 就是空的了,大神们,求指教


7 回复

cookie 跨域导致的 不要用 session 换另一种方法

用啥呀,哈哈

刚试了一下,好像并不能解决

用 cors 这个 module 就行了

在Node.js中共享session信息通常涉及使用某种session存储机制,比如内存存储、Redis、MongoDB等。下面我将展示如何使用express-session中间件和Redis来共享session信息。

首先,确保你已经安装了必要的包:

npm install express express-session redis

然后,你可以设置你的Express服务器来使用Redis作为session存储:

const express = require('express');
const session = require('express-session');
const RedisStore = require('connect-redis')(session);
const redis = require('redis');
const client = redis.createClient();

const app = express();

app.use(session({
  store: new RedisStore({ client }),
  secret: 'your_secret_key',
  resave: false,
  saveUninitialized: false,
  cookie: { secure: false } // 注意:在生产环境中应设置为true,并使用HTTPS
}));

app.get('/api/endpoint1', (req, res) => {
  if (req.session.views) {
    req.session.views++;
    res.send(`You have visited this page ${req.session.views} times`);
  } else {
    req.session.views = 1;
    res.send('Welcome to the session demo. Refresh!');
  }
});

app.get('/api/endpoint2', (req, res) => {
  res.send(`Session views: ${req.session.views}`);
});

app.listen(3000, () => console.log('Server running on port 3000'));

在这个例子中,/api/endpoint1/api/endpoint2两个接口共享同一个session信息,存储在Redis中。你可以通过访问这两个接口来验证session是否共享。

回到顶部