我在 SailsJS、Passport-Local 和 PostgreSQL 中有一个个人项目。我设法获得连接并将用户保存在 PostgreSQL 数据库中。但我在会话存储方面遇到了很大的问题。据我所知 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 应用程序时,出现错误:
$ 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 不允许这样做(用户可以注册但无法登录)
也许您可以打开 PostgreSQL 客户端身份验证配置文件来修复此错误:
/var/lib/pgsql/data/pg_hba.conf
并更改:
本地所有人都信任
托管所有 127.0.0.1/32 信任
保存并关闭文件。重新启动 Postgresql 服务器:
服务 postgresql 重新启动
让它发挥作用
安装 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");
我用于那个sails-pg-session。 有关会话的信息必须存储在 config/session.js 中:
adapter: 'sails-pg-session',
database: 'dbname',
host: 'localhost',
user: 'dbuser',
password: 'dbpasswd',
port: 5432
希望有帮助