Express Postgres会话无法正常工作

时间:2016-05-07 14:19:52

标签: postgresql express express-session

我正在使用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

我做错了什么?

2 个答案:

答案 0 :(得分:2)

试试这个:

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
 }));

答案 1 :(得分:1)

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

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

请参阅the manual for pg_hba.conf,更常见的是the client authentication chapter

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