Node.js 会话令牌isn';t存储和存储信息系统';无法从浏览器中查看

Node.js 会话令牌isn';t存储和存储信息系统';无法从浏览器中查看,node.js,express-session,Node.js,Express Session,我正在尝试为我正在使用的应用程序设置一个用户ID的会话存储,但我一辈子都无法让express会话正常工作 我已经查看了大量的堆栈溢出帖子、教程和其他网站,并按照那里的所有说明进行操作,但都没有效果。cookie甚至没有出现在浏览器中。我也尝试过更改。使用的顺序,但没有其他位置起作用 这是密码 const session = require('express-session'); const cookieParser = require('cookie-parser'); const App =

我正在尝试为我正在使用的应用程序设置一个用户ID的会话存储,但我一辈子都无法让express会话正常工作

我已经查看了大量的堆栈溢出帖子、教程和其他网站,并按照那里的所有说明进行操作,但都没有效果。cookie甚至没有出现在浏览器中。我也尝试过更改。使用的顺序,但没有其他位置起作用

这是密码

const session = require('express-session');
const cookieParser = require('cookie-parser');
const App = require('./app');

var app = new App();
const server = express();
const port = process.env.PORT || 3030;

server.use(cors());
server.use(express.static(path.join(__dirname, buildPath)));

server.use(cookieParser());

server.use(session({
  key: 'user_sid',
  secret: 'somerandonstuffs',
  resave: false,
  saveUninitialized: false,
  cookie: {
    maxAge: 10000,
    secure: false,
    ttpOnly: false
  }
}));

server.use((req, res, next) => {
  console.log(req.cookies);
  console.log(req.session);
  if (req.cookies.user_sid && !req.session.user) {
    res.clearCookie('user_sid');
  }
  next();
});

server.get('/api/userRole', async (req, res, next) => {
  try {
    const role = await app.userRole(req.query.userID, req.query.email);
    res.send({ role });
    req.session.user = req.query.userID; //assign
  }
  catch (error) {
    next(error);
  }
});

server.get('/api/music', async (req, res, next) => {
  try {
    console.log(req.session.user) //returns undefined
    const uid = req.query.user;
    app.checkAuth(uid, app.constants.roles.member);
    const music = await app.music(req.query.status);
    res.send(music);
  }
  catch (error) {
    next(error);
  }
});
下面是控制台日志的结果

{}
Session {
  cookie: 
   { path: '/',
     _expires: 2019-07-19T22:01:58.342Z,
     originalMaxAge: 10000,
     httpOnly: false,
     secure: false } }
{}
Session {
  cookie: 
   { path: '/',
     _expires: 2019-07-19T22:01:58.387Z,
     originalMaxAge: 10000,
     httpOnly: false,
     secure: false } }
undefined

我所能得到的回应似乎都是未定义的。知道哪里出了问题吗?提前感谢您的帮助。

您需要为
快速会话设置存储选项。
最简单的设置是,但我建议在生产环境中使用类似的设置

然后将会话存储实例传递给
express session
选项,如下所示:

var session = require('express-session');
var FileStore = require('session-file-store')(session);

var fileStoreOptions = {};

app.use(session({
   store: new FileStore(fileStoreOptions),
   secret: 'keyboard cat'
}));

两件事:您不应该将
cookie解析器
用于
express会话
。跨2个中间件可能与cookie机密发生冲突。你也可以考虑 cookie会话,这将在概念上使用简单得多,谢谢你的建议!我删除了cookie解析器并尝试了cookie会话,但仍然遇到了相同的问题,broswer从未识别出设置了cookie。我会再给它一次机会,但还是一样的问题