我在SailsJS,Passport-Local和PostgreSQL中有个人项目。我设法在PostgreSQL DB中获得连接并保存用户。但是我对会话存储有很大的问题。据我所知,SailsJS正在使用Connect来完成它。
MongoDB以前的工作代码:
connections: {
prodMongodbServer: {
adapter: 'sails-mongo',
host: 'localhost',
port: 27017,
//user: '',
//password: '',
database: 'sails-auth'
}
},
session: {
adapter: 'mongo',
host: 'localhost',
port: 27017,
db: 'sails-auth',
collection: 'sessions'
}
我与PostgreSQL的(工作)连接:
connections: {
somePostgresqlServer: {
adapter: 'sails-postgresql',
host: 'localhost',
port: 5432,
user: 'postgres',
password: 'Password1',
database: 'sails-auth'
}
},
我遇到问题的代码:
session: {
adapter: 'connect-pg-simple',
host: 'localhost',
port: 5432,
user: 'postgres',
password: 'Password1',
db: 'sails-auth'
}
我已经安装了connect-pg-simple,执行了SQL代码,但是当我启动sails app时出现错误:
$ sails lift
info: Starting app...
Init Express midleware
Failed to prune sessions: password authentication failed for user "myPcUser"
info:
info: .-..-.
info:
info: Sails <| .-..-.
info: v0.11.3 |\
info: /|.\
info: / || \
info: ,' |' \
info: .-'.-==|/_--'
info: `--'-------'
info: __---___--___---___--___---___--___
info: ____---___--___---___--___---___--___-__
info:
我认为使用connect-pg可能更好,但它需要很多依赖才能使我保持简单版本。谁知道这个问题是关于什么的?我在Windows上,所以它很奇怪,我的PC用户有问题......
也许某人有一些解决方案可以为用户等使用PostgreSQL,为会话使用Mongo。对于我已经测试过的Passport不允许这样做(用户可以注册但无法登录)
答案 0 :(得分:1)
也许您可以修复此错误打开PostgreSQL客户端身份验证配置文件:
/var/lib/pgsql/data/pg_hba.conf
并改变:
本地所有信任
托管所有127.0.0.1/32 trust
保存并关闭文件。重启Postgresql服务器:
service postgresql restart
答案 1 :(得分:1)
使其正常工作
安装connect-pg-simple节点模块:$ npm install connect-pg-simple
在session.js中定义适配器和连接字符串:
adapter: 'connect-pg-simple',
conString: 'postgres://user:pass@host:5432/dbname',
3)在node_modules / connect-pg-simple / table.sql文件上运行SQL命令以创建会话表。 :
CREATE TABLE "session" (
"sid" varchar NOT NULL COLLATE "default",
"sess" json NOT NULL,
"expire" timestamp(6) NOT NULL
)
WITH (OIDS=FALSE);
ALTER TABLE "session" ADD CONSTRAINT "session_pkey" PRIMARY KEY ("sid") NOT DEFERRABLE INITIALLY IMMEDIATE;
CREATE INDEX "IDX_session_expire" ON "session" ("expire");
答案 2 :(得分:0)
我用于sails-pg-session。 有关会话的信息必须存储在config / session.js:
中adapter: 'sails-pg-session',
database: 'dbname',
host: 'localhost',
user: 'dbuser',
password: 'dbpasswd',
port: 5432
希望有所帮助