Express Postgres 会话无法正常工作

Express Postgres Sessions not working correctly

我正在使用 express-session 并尝试使用 Postgres 作为我的会话存储:

app.use(session({
    store: new (require('connect-pg-simple')(session))(),
    secret: 'mysessionsecret',
    resave: false,
    cookie: {
      maxAge: 7 * 24 * 60 * 60 * 1000
    }
  }));

但是当我 运行 我的服务器时,我得到

2016-05-07T14:19:05.571491+00:00 app[web.1]: error: no pg_hba.conf entry for host "my.ip.address", user "myuser", database "databasename", SSL off

我做错了什么?

在 PostgreSQL 的基于主机的身份验证文件 pg_hba.conf 中没有主机 "my.ip.address"、用户 "myuser"、数据库 "databasename" 的条目,SSL 关闭。

您可能已将 PostgreSQL 配置为仅接受来自环回地址 127.0.0.1 的连接。

the manual for pg_hba.conf and more generally the client authentication chapter


好的,所以 connect-pg-simple gets its connection info from the DATABASE_URL environment variable by default。从您尝试连接到 Herkoku PostgreSQL 实例的评论来看,大概是来自未设置 DATABASE_URL 的 Heroku 外部。因此,您应该将 DATABASE_URL env var 设置为适当的值,确保包含 sslmode=require(请参阅 Heroku 文档)或将 URL 作为 connString 参数传递给 connect-pg-simple.

试试这个:

var pgSession = require('connect-pg-simple')(session);
app.use(session({
    store: new pgSession({
        conString : process.env.DATABASE_URL
     }),
     secret: 'mysessionsecret',
     resave: false,
     cookie: {
         maxAge: 7 * 24 * 60 * 60 * 1000
     },
     secure : true
 }));