firebase express-session不会在cookie中存储任何内容

时间:2018-01-20 13:51:30

标签: node.js firebase cookies firebase-realtime-database express-session

这是我的代码:

const functions = require('firebase-functions');
const express = require('express');
const session = require('express-session');
const FirebaseStore = require('connect-session-firebase')(session);
const firebase = require('firebase-admin');
const cookieParser = require('cookie-parser');

const ref = firebase.initializeApp(
  functions.config().firebase
);

const app = express();
app.use(cookieParser());
app.set('trust proxy', 1);

app.use(session({
  store: new FirebaseStore({
    database: ref.database()
  }),
  secret: 'abigsigrettotheseeiosnofthmbiith765huig',
  resave: true,
  saveUninitialized: true,
  cookie: { maxAge: 60000 }
}));

app.get('/', function(req, res, next) {
  console.log(req.session);
  req.session.username='xyz';
  res.send('Filling the session with data');
});

app.get('/bar', function(req, res, next) {
  console.log(req.session);
  var sessionData = req.session.username;
  res.send(`This will print the attribute I set earlier: ${sessionData}`);
});


exports.app = functions.https.onRequest(app);

当我运行它时,它会在数据库中创建新会话。

每次刷新页面时,都会有一个新会话。

我当然希望只创建一个会话,

并且在刷新时,此会话只会更新,或从那里获取数据。不要每次都创建一个新的。

检查cookie - 向我显示没有保存/创建cookie。

我已经做了好几个小时......

1 个答案:

答案 0 :(得分:0)

当我使用 firebase 函数和托管时,这令人沮丧,但可以通过在会话中简单设置 name:"__session" 来解决。

app.use(session({
  store: new FirebaseStore({
    database: ref.database()
  }),
  name:"__session
  ...