使用 SailsJS 连接 PostgreSQL 中的会话

问题描述 投票:0回答:3

我在 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 sails.js node.js-connect
3个回答
1
投票

也许您可以打开 PostgreSQL 客户端身份验证配置文件来修复此错误:


/var/lib/pgsql/data/pg_hba.conf

并更改:

本地所有人都信任

托管所有 127.0.0.1/32 信任

保存并关闭文件。重新启动 Postgresql 服务器:

服务 postgresql 重新启动


1
投票

让它发挥作用

  1. 安装 connect-pg-simple 节点模块: $ npm install connect-pg-simple

  2. 在 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");


0
投票

我用于那个sails-pg-session。 有关会话的信息必须存储在 config/session.js 中:

adapter: 'sails-pg-session',
database: 'dbname',
  host: 'localhost',
  user: 'dbuser',
  password: 'dbpasswd',
  port: 5432

希望有帮助

© www.soinside.com 2019 - 2024. All rights reserved.