Postgresql 快速会话、passport和connect pg生产中的简单问题

Postgresql 快速会话、passport和connect pg生产中的简单问题,postgresql,express,heroku,passport.js,express-session,Postgresql,Express,Heroku,Passport.js,Express Session,这是我第一次在这里发布问题。我希望你们能帮我解决这个问题。我对node.js,express是相当陌生的,因此,对于我的经验不足,我深表歉意 我当前在node.js express app中的身份验证会话有问题。我使用Passport.js来处理身份验证,我使用connect pg simple(PostgreSQL会话存储)存储登录会话。单击“登录”按钮后,会话存储在我的PostgreSQL数据库中,但express无法找到它。事实上,它在数据库中存储了两次会话,但其中只有一个获得了passp

这是我第一次在这里发布问题。我希望你们能帮我解决这个问题。我对node.js,express是相当陌生的,因此,对于我的经验不足,我深表歉意

我当前在node.js express app中的身份验证会话有问题。我使用Passport.js来处理身份验证,我使用connect pg simple(PostgreSQL会话存储)存储登录会话。单击“登录”按钮后,会话存储在我的PostgreSQL数据库中,但express无法找到它。事实上,它在数据库中存储了两次会话,但其中只有一个获得了passport cookie

当服务器仍在本地主机上时,此问题不存在。当我将服务器托管在Heroku上时,会显示此消息

此外,每当我点击heroku repo时,它都会显示以下警告:

connect.session()MemoryStore不是为生产环境设计的,因为它会泄漏内存,并且不会扩展到单个进程

我的猜测是我没有正确地将express会话连接到PostgreSQL express存储。下面是我的代码:

以下是我如何设置PostgreSQL数据库的:

const Pool = require("pg").Pool;

const pool = new Pool({
    user: process.env.PGUSER,
    password: process.env.PGPASSWORD,
    host: process.env.PGHOST,
    port: process.env.PGPORT,
    database: process.env.PGDATABASE
});


module.exports = pool
以下是我设置会话的方式:

const poolSession = new (require('connect-pg-simple')(session))({
    pool : pool    
  })

app.set('trust proxy', 1);
app.use(session({
    store: poolSession, 
    secret: process.env.SESSION_SECRET,
    saveUninitialized: true,
    resave: false,
    cookie: { 
        secure: true,
        maxAge: 30 * 24 * 60 * 60 * 1000
    } // 30 days
}));

app.use(passport.initialize());
app.use(passport.session());
这是单击登录按钮时存储在数据库中的2个会话的图像

这是我的登录路径(单击登录按钮时):

这是成功登录时重定向到的路由:

router.get("/", (req, res) => {
        console.log("/ ", req.isAuthenticated()); //False
        console.log("/ ", req.sessionID); //The Id of the 2nd session store in db 
        if(req.isAuthenticated()){
           //Notify user login success
        } 
    });

我已经在这里呆了几天了。如果你需要更多的代码,请告诉我

读这篇文章,你被卡住是什么意思?是有错误还是什么?@Darvesh我已经在上面的代码中尝试过了,但似乎不起作用。我确实将express会话连接到会话存储,但它仍然说我正在使用内存存储。我不知道为什么。读这篇文章你说你被卡住是什么意思?是有错误还是什么?@Darvesh我已经在上面的代码中尝试过了,但似乎不起作用。我确实将express会话连接到会话存储,但它仍然说我正在使用内存存储。我不知道为什么。
router.get("/", (req, res) => {
        console.log("/ ", req.isAuthenticated()); //False
        console.log("/ ", req.sessionID); //The Id of the 2nd session store in db 
        if(req.isAuthenticated()){
           //Notify user login success
        } 
    });