Javascript 带有firebase的Node.js不会在会话中保存信息
我正在尝试在我的应用程序中使用会话,以跟踪用户登录等情况 但是 当我尝试使用最简单的方法时,我不断得到错误: 警告:connect.session()MemoryStore不是为生产环境设计的,因为它会泄漏内存,并且不会扩展到单个进程 在那里,经过多次搜索,我添加了firebase会话功能, 但是现在,即使我没有收到任何错误,会话中也没有保存任何内容 这是我的代码:Javascript 带有firebase的Node.js不会在会话中保存信息,javascript,node.js,firebase,session,cookies,Javascript,Node.js,Firebase,Session,Cookies,我正在尝试在我的应用程序中使用会话,以跟踪用户登录等情况 但是 当我尝试使用最简单的方法时,我不断得到错误: 警告:connect.session()MemoryStore不是为生产环境设计的,因为它会泄漏内存,并且不会扩展到单个进程 在那里,经过多次搜索,我添加了firebase会话功能, 但是现在,即使我没有收到任何错误,会话中也没有保存任何内容 这是我的代码: const functions = require('firebase-functions'); const ex
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 ref = firebase.initializeApp(
functions.config().firebase
);
const app = express();
app.use(session({
store: new FirebaseStore({
database: ref.database()
}),
secret: 'asdfasgbrwewet53hnhwetynsy',
resave: true,
saveUninitialized: true
}));
app.get('/', function(req, res, next) {
console.log(req.session);
req.session.username='rakafa';
res.send('Returning with some text');
});
app.get('/bar', function(req, res, next) {
console.log(req.session);
var someAttribute = req.session.username;
res.send(`This will print the attribute I set earlier: ${someAttribute}`);
});
exports.app = functions.https.onRequest(app);
这就是我目前所做的:
- 我最初使用会话的示例:
- 我从npm获取了firebase部分:
- 尝试使用radis store作为解决方案,但没有发现以下消息:
- 使用会话存储,给了我和不使用任何东西一样的担忧李>
- 这个问题让我想到了使用firebase会话
- 我看到了一个关于cookies的例子,但我不理解,也没有找到另一个例子
ref
更改为:
const ref = firebase.initializeApp({
//admin.credential.cert(serviceAccount)
credential: firebase.credential.applicationDefault(),
databaseURL: "https://*****.firebaseio.com/"
});
但是,当我运行应用程序时,一旦我刷新页面,会话中就没有任何内容了
^^
我可以看到应用程序在服务器上创建了很多会话。
但他们都没有我在应用程序上添加的信息,
因为我只使用一个浏览器,所以应该只有一个会话,我错了吗?firebase配置在哪里? 可能尝试以下方式初始化firebase管理员:
admin.initializeApp({
credential: admin.credential.cert(serviceAccount),
databaseURL: 'https://<DATABASE_NAME>.firebaseio.com'
});
admin.initializeApp({
凭证:管理员凭证证书(serviceAccount),
数据库URL:'https://.firebaseio.com'
});
我在使用firebase主机和函数时遇到了这个问题,但只需在会话中设置名称:“\u session”
即可解决
app.use(session({
name:"__session,
...
添加此项后,在会话中保存值,如
req.session.username='rakafa'
效果很好。这种方法对我从数据库获取数据很有效,但我将尝试你说的方法。只是,我在哪里可以找到凭据?以及“管理员”来自哪里?这和我使用“firebase”一样吗?我也面临着同样的问题。有人能帮我解决这个问题吗?