我正在使用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
我做错了什么?
答案 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